0% found this document useful (0 votes)
1 views85 pages

Getting Started With Purequery V Rodrigues Et Al Download

The document is a guide titled 'Getting Started With Purequery' authored by Vitor Rodrigues and others, providing an overview of the pureQuery technology and its application development environment. It includes installation instructions, tooling, performance optimization, and security insights for developers. The book is structured into multiple parts, covering various aspects of pureQuery to assist users in effectively utilizing the technology.

Uploaded by

protodomesuq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views85 pages

Getting Started With Purequery V Rodrigues Et Al Download

The document is a guide titled 'Getting Started With Purequery' authored by Vitor Rodrigues and others, providing an overview of the pureQuery technology and its application development environment. It includes installation instructions, tooling, performance optimization, and security insights for developers. The book is structured into multiple parts, covering various aspects of pureQuery to assist users in effectively utilizing the technology.

Uploaded by

protodomesuq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 85

Getting Started With Purequery V Rodrigues Et Al

download

https://ebookbell.com/product/getting-started-with-purequery-v-
rodrigues-et-al-4091240

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Getting Started With Natural Language Processing Final Release 1st


Edition Ekaterina Kochmar

https://ebookbell.com/product/getting-started-with-natural-language-
processing-final-release-1st-edition-ekaterina-kochmar-46078164

Getting Started With Uno Platform And Winui 3 Handson Building Of


Crossplatform Desktop Mobile And Web Applications That Can Run
Anywhere 1st Edition Andrew Hoefling

https://ebookbell.com/product/getting-started-with-uno-platform-and-
winui-3-handson-building-of-crossplatform-desktop-mobile-and-web-
applications-that-can-run-anywhere-1st-edition-andrew-
hoefling-46364362

Getting Started With Secure Embedded Systems Alexandru Radovici

https://ebookbell.com/product/getting-started-with-secure-embedded-
systems-alexandru-radovici-47255148

Getting Started With Visual Studio 2022 Learning And Implementing New
Features 2nd Dirk Strauss

https://ebookbell.com/product/getting-started-with-visual-
studio-2022-learning-and-implementing-new-features-2nd-dirk-
strauss-47378260
Getting Started With Microsoft Viva An End User Guide To Business
Transformation 1st Edition Darce Hess

https://ebookbell.com/product/getting-started-with-microsoft-viva-an-
end-user-guide-to-business-transformation-1st-edition-darce-
hess-47554262

Getting Started With Forex Trading Using Python Beginners Guide To The
Currency Market And Development Of Trading Algorithms 1st Edition Alex
Krishtop

https://ebookbell.com/product/getting-started-with-forex-trading-
using-python-beginners-guide-to-the-currency-market-and-development-
of-trading-algorithms-1st-edition-alex-krishtop-48054962

Getting Started With Angular Create And Deploy Angular Applications


1st Edition Victorhugogarcia

https://ebookbell.com/product/getting-started-with-angular-create-and-
deploy-angular-applications-1st-edition-victorhugogarcia-48081270

Getting Started With Python Data Analysis Phuong Voth Martin Czygan

https://ebookbell.com/product/getting-started-with-python-data-
analysis-phuong-voth-martin-czygan-49052760

Getting Started With Bluetooth Low Energy Tools And Techniques For
Lowpower Networking Kevin Townsend

https://ebookbell.com/product/getting-started-with-bluetooth-low-
energy-tools-and-techniques-for-lowpower-networking-kevin-
townsend-50195590
GETTING STARTED WITH

pureQuery
A book for the community by the community

VITOR RODRIGUES, ZEUS COURTOIS, HEATHER LAMB,


CHRISTINA SHEETS, KATHRYN ZEIDENSTEIN

FIRST EDITION
4 Getting Started with pureQuery

First Edition December 2010


© Copyright IBM Corporation 2010. All rights reserved.
Notices
This information was developed for products and services offered in the U.S.A.

IBM may not offer the products, services, or features discussed in this document in other countries.
Consult your local IBM representative for information on the products and services currently available
in your area. Any reference to an IBM product, program, or service is not intended to state or imply
that only that IBM product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may be used instead.
However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product,
program, or service.

IBM may have patents or pending patent applications covering subject matter described in this
document. The furnishing of this document does not grant you any license to these patents. You can
send license inquiries, in writing, to:

IBM Director of Licensing


IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.

For license inquiries regarding double-byte character set (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:

Intellectual Property Licensing


Legal and Intellectual Property Law
IBM Japan, Ltd.
3-2-12, Roppongi, Minato-ku, Tokyo 106-8711
The following paragraph does not apply to the United Kingdom or any other country where
such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES
CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in
certain transactions, therefore, this statement may not apply to you.

This information could include technical inaccuracies or typographical errors. Changes are
periodically made to the information herein; these changes will be incorporated in new editions of the
publication. IBM may make improvements and/or changes in the product(s) and/or the program(s)
described in this publication at any time without notice.

Any references in this information to non-IBM Web sites are provided for convenience only and do
not in any manner serve as an endorsement of those Web sites. The materials at those Web sites
are not part of the materials for this IBM product and use of those Web sites is at your own risk.

IBM may use or distribute any of the information you supply in any way it believes appropriate without
incurring any obligation to you.
6 Getting Started with pureQuery

The licensed program described in this document and all licensed material available for it are
provided by IBM under terms of the IBM Customer Agreement, IBM International Program License
Agreement or any equivalent agreement between us.

Any performance data contained herein was determined in a controlled environment. Therefore, the
results obtained in other operating environments may vary significantly. Some measurements may
have been made on development-level systems and there is no guarantee that these measurements
will be the same on generally available systems. Furthermore, some measurements may have been
estimated through extrapolation. Actual results may vary. Users of this document should verify the
applicable data for their specific environment.

Information concerning non-IBM products was obtained from the suppliers of those products, their
published announcements or other publicly available sources. IBM has not tested those products and
cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of
those products.

All statements regarding IBM's future direction or intent are subject to change or withdrawal without
notice, and represent goals and objectives only.

This information contains examples of data and reports used in daily business operations. To
illustrate them as completely as possible, the examples include the names of individuals, companies,
brands, and products. All of these names are fictitious and any similarity to the names and addresses
used by an actual business enterprise is entirely coincidental.

COPYRIGHT LICENSE:

This information contains sample application programs in source language, which illustrate
programming techniques on various operating platforms. You may copy, modify, and distribute these
sample programs in any form without payment to IBM, for the purposes of developing, using,
marketing or distributing application programs conforming to the application programming interface
for the operating platform for which the sample programs are written. These examples have not been
thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability,
serviceability, or function of these programs. The sample programs are provided "AS IS", without
warranty of any kind. IBM shall not be liable for any damages arising out of your use of the sample
programs.

References in this publication to IBM products or services do not imply that IBM intends to make
them available in all countries in which IBM operates.

If you are viewing this information softcopy, the photographs and color illustrations may not
appear.
Trademarks
IBM, the IBM logo, DB2, z/OS, Optim, and ibm.com are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies. A current list of IBM trademarks is
available on the Web at “Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml.

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States,
other countries, or both.

Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries,
or both.

Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.

UNIX is a registered trademark of The Open Group in the United States and other countries.

Other company, product, or service names may be trademarks or service marks of others.
9

Table of Contents
Preface ............................................................................................................................. 17
Who should read this book? ........................................................................................ 17
How is this book structured? ........................................................................................ 17
A book for the community ............................................................................................ 18
Conventions ................................................................................................................. 19
What’s next? ................................................................................................................ 19
About the Authors........................................................................................................... 21
Contributors .................................................................................................................... 23
Acknowledgements ........................................................................................................ 24
PART I – OVERVIEW AND SETUP ................................................................................. 25
Chapter 1 - Introduction to pureQuery.......................................................................... 27
1.1 The big picture: What is pureQuery? ..................................................................... 27
1.1.1 What’s in a name? .......................................................................................... 28
1.1.2 What do we mean by platform? ...................................................................... 29
1.2 pureQuery application programming interfaces ..................................................... 30
1.3 pureQuery runtime ................................................................................................. 31
1.4 pureQuery application development environment ................................................. 33
1.5 pureQuery monitoring services .............................................................................. 35
1.6 Career path ............................................................................................................ 38
1.7 The pureQuery community .................................................................................... 38
1.7.1 Popular community Web sites ........................................................................ 39
1.8 Competitive products ............................................................................................. 40
1.9 Exercises ............................................................................................................... 42
1.10 Review Questions ................................................................................................ 42
Chapter 2 - Installing pureQuery (Optim Development Studio) ................................. 45
2.1 Installation: The big picture .................................................................................... 45
2.2 Installation prerequisites ........................................................................................ 46
2.3 Installing Optim Development Studio..................................................................... 47
2.3.1 Installing from the launchpad .......................................................................... 48
2.3.2 Applying Optim Development Studio Fixpack 1 ............................................. 54
2.4 Running Optim Development Studio ..................................................................... 55
2.4.1 Adding pureQuery support to projects ............................................................ 55
2.5 Summary................................................................................................................ 58
2.6 Exercise ................................................................................................................. 58
2.7 Review Questions .................................................................................................. 59
PART II – TOOLING ......................................................................................................... 61
Chapter 3 - Code generation and customized Java Editor Integration ..................... 65
3.1 pureQuery Tooling: The big picture ....................................................................... 65
3.1.1 Generating pureQuery code ........................................................................... 66
3.2 Overview of the different types of wizards for code generation within the pureQuery
tooling........................................................................................................................... 70
10 Getting Started with pureQuery

3.2.1 Stored procedure code generation wizard...................................................... 71


3.2.2 Generating or updating JUnit testcases for existing interfaces ...................... 71
3.3 SQL editor integration inside the Java editor ......................................................... 71
3.3.1 SQL validation within the Java editor ............................................................. 72
3.3.2 SQL semantic and syntactic content assist for SQL inside Java editor ......... 72
3.3.3 Test and run SQL within your Java program .................................................. 73
3.4 Summary................................................................................................................ 73
3.5 Review Questions .................................................................................................. 73
Chapter 4 - pureQuery tooling Views ............................................................................ 75
4.1 pureQuery tooling: The big picture ........................................................................ 75
4.2 SQL Outline view ................................................................................................... 76
4.2.1 Gather the SQL statements issued by the application ................................... 76
4.2.2 Gain insight into where SQL statements are issued within your application .. 78
4.2.3 Pages of the SQL Outline view ....................................................................... 79
4.2.4 Enhanced impact analysis within database applications................................ 82
4.3 Designing and binding packages for static SQL development .............................. 83
4.3.1 Designing database packages ....................................................................... 84
4.3.2 Binding database packages ........................................................................... 86
4.4 pureQuery Analysis view ....................................................................................... 87
4.5 Enforce data privacy from modeling through development ................................... 88
4.6 Summary................................................................................................................ 90
4.7 Review Questions .................................................................................................. 91
Chapter 5 - Developing for performance ...................................................................... 93
5.1 Developing for performance: The big picture ........................................................ 93
5.2 Identify the time and frequency of execution and cost of a statement .................. 94
5.2.1 Gathering and viewing performance metrics .................................................. 94
5.2.2 Gathering and viewing explain data ............................................................... 97
5.3 Optimizing your application for performance ......................................................... 97
5.3.1 Optimize your applications by using Optim Query Tuner ............................... 98
5.4 Comparing performance results after optimizing your application ........................ 99
5.5 Summary.............................................................................................................. 100
5.6 Review Questions ................................................................................................ 101
PART III – SECURITY, PERFORMANCE, AND INSIGHT ............................................ 105
Chapter 6 - The Client Optimizer: pureQuery for Existing JDBC Applications ...... 107
6.1 Client Optimizer: The big picture ......................................................................... 107
6.2 Overview of how to use the Client Optimizer ....................................................... 108
6.3 JDBC driver requirements for using Client Optimizer functionality ...................... 112
6.4 pureQuery properties ........................................................................................... 112
6.5 Capturing SQL statements .................................................................................. 114
6.5.1 pureQuery properties during capture............................................................ 115
6.5.2 In practice: Capture SQL statements in the Human Resources Manager
application .............................................................................................................. 115
11

6.6 Processing the pureQueryXml file with the Configure utility ................................ 116
6.6.1 Specifying options for the Configure utility ................................................... 117
6.6.2 Statement sets in pureQueryXml files .......................................................... 118
6.6.3 DDL statements ............................................................................................ 120
6.6.4 Files with the .org extension ....................................................................... 121
6.6.5 Running the Configure utility......................................................................... 121
6.6.6 In practice: Configure the pureQueryXml file that was captured .................. 122
6.7 Binding the SQL statements in the pureQueryXml file ........................................ 122
6.7.1 In practice: Bind the SQL statements in your pureQueryXml file ................. 122
6.8 Running an application while specifying a pureQueryXml file ............................. 126
6.8.1 Static execution ............................................................................................ 126
6.8.2 Captured-only execution ............................................................................... 126
6.8.3 Replacing SQL statements with alternate statements .................................. 127
6.8.4 SQL literal substitution .................................................................................. 127
6.8.5 Capturing during execution ........................................................................... 127
6.8.6 In practice: Run the Human Resources Manager application while specifying
the pureQueryXml file ............................................................................................ 127
6.9 Specifying alternate SQL statements for execution ............................................. 127
6.10 SQL Literal substitution ...................................................................................... 129
6.10.1 Advantages of parameterized SQL statements .......................................... 129
6.10.2 How to use pureQuery SQL literal substitution........................................... 130
6.11 Locating SQL statements in your application .................................................... 131
6.12 Aspects of JDBC application that may cause problems during static execution132
6.13 Advanced features ............................................................................................. 132
6.14 Summary ............................................................................................................ 134
6.15 Review questions ............................................................................................... 134
6.16 Exercise ............................................................................................................. 136
Chapter 7 - The StaticBinder Utility............................................................................. 137
7.1 The StaticBinder utility: The big picture ............................................................... 137
7.2 Binding from interfaces and pureQueryXml files ................................................. 138
7.2.1 Binding from interfaces ................................................................................. 138
7.2.2 Binding from pureQueryXml files .................................................................. 139
7.3 Specifying options for the StaticBinder utility ....................................................... 141
7.4 Specifying interfaces and pureQueryXml files in an archive file .......................... 142
7.5 Running the StaticBinder utility in IBM Optim Development Studio .................... 142
7.6 Running the StaticBinder utility from the command line ...................................... 146
7.6.1 Specifying database connection information ................................................ 146
7.6.2 Specifying the interfaces and pureQueryXml files ........................................ 147
7.6.3 Specifying additional options ........................................................................ 149
7.6.4 Example commands for the StaticBinder utility ............................................ 149
7.7 Advanced features ............................................................................................... 150
7.8 Summary.............................................................................................................. 151
7.9 Review questions ................................................................................................. 151
7.10 Exercise ............................................................................................................. 153
12 Getting Started with pureQuery

Chapter 8 - Extended Insight ....................................................................................... 155


8.1 Extended Insight: the big picture ......................................................................... 155
8.2 Common Problems in Multi-Tiered Monitoring .................................................... 155
8.3 Monitoring pureQuery Clients .............................................................................. 157
8.3.1 More Monitored Layers ................................................................................. 157
8.3.2 Identifying pureQuery Applications Using Extended Insight......................... 160
8.4 Extended Insight For A Variety of Application Types .......................................... 162
8.4.1 Monitoring Plain JDBC or CLI applications................................................... 162
8.4.2 Monitoring pureQuery Applications associated with pureQueryXml ............ 163
8.5 Summary.............................................................................................................. 164
8.6 Review Questions ................................................................................................ 164
PART IV – API, RUNTIME AND SERVICES ................................................................. 167
Chapter 9 - Persistence Frameworks and Data Access: Context for pureQuery ... 169
9.1 Persistence Frameworks and Data Access: the big picture ................................ 169
9.1.1 pureQuery and Persistence Frameworks ..................................................... 170
9.2 pureQuery APIs in Context .................................................................................. 171
9.3 pureQuery Data Access Overview....................................................................... 172
9.3.1 pureQuery Beans as Transfer Objects ......................................................... 172
9.3.2 Advanced pureQuery bean assembly using pureQuery Handlers ............... 176
9.3.3 Query over Collections with pureQuery ........................................................ 177
9.3.4 XML entity mapping with pureQuery ............................................................ 177
9.3.5 Overriding SQL Statements in Applications ................................................. 178
9.4 Summary.............................................................................................................. 179
9.5 Review Questions ................................................................................................ 180
Chapter 10 - Inline Programming Style ....................................................................... 183
10.1 Inline programming style: The big picture .......................................................... 183
10.2 Instances of the com.ibm.pdq.runtime.Data interface ............................. 186
10.2.1 In practice: Overview of the “In practice” sections in this chapter .............. 186
10.2.2 In practice: Create a Data object in the displayLogin() method.......... 187
10.3 Executing SQL SELECT statements .................................................................. 188
10.3.1 Choosing the return type ............................................................................ 188
10.3.2 Overriding the default cursor attributes ...................................................... 189
10.3.3 In practice: Execute a simple SELECT statement that uses cursor attributes --
Complete the “Company Employees” screen ........................................................ 190
10.4 Executing SQL statement that have parameters ............................................... 191
10.4.1 In practice: Specify a scalar as a parameter to an SQL statement-- Complete
the “Login” screen .................................................................................................. 193
10.4.2 In practice: Specify a pureQuery bean as a parameter to an SQL statement--
Complete the “Employee Information” screen ....................................................... 195
10.5 Executing SQL statements that modify information in a database .................... 197
10.5.1 Executing an SQL statement one time by using the method: int update
(String sql, Object... parameters) ..................................................... 197
13

10.5.2 Executing an SQL statement with generated keys one time by using the
method: ROW update (String sql, Class<ROW> returnClass, String[]
columnNames, Object... parameters) ..................................................... 198
10.5.3 Executing an SQL statement multiple times ............................................... 200
10.5.4 In practice: Execute an SQL statement that modifies the database -- Complete
the "Change Employee Information" screen .......................................................... 201
10.6 Advanced features ............................................................................................. 202
10.7 Summary ............................................................................................................ 203
10.8 Review questions ............................................................................................... 203
10.9 Exercise ............................................................................................................. 205
Chapter 11 - Annotated-Method Programming Style ................................................ 207
11.1 Annotated-method Programming Style: The big picture................................... 207
11.2 Annotated-method interfaces............................................................................. 210
11.2.1 In practice: Overview of the “In practice” sections in this chapter .............. 210
11.2.2 In practice: Observe the HumanResourcesData interface....................... 211
11.2.3 In practice: Create an instance of an interface of annotated methods in the
displayLogin() method.................................................................................... 211
11.3 Generating an implementation class for an interface of annotated methods .... 212
11.3.1 Specifying options to the pureQuery Generator ......................................... 212
11.3.2 Generating an implementation class in Optim Development Studio .......... 215
11.4 Annotated methods ............................................................................................ 215
11.4.1 Declaring the return type ............................................................................ 217
11.4.2 In practice: Execute a simple SELECT statement that uses cursor attributes --
Complete the “Company Employees” screen ........................................................ 219
11.5 Executing SQL statements that have parameters ............................................. 221
11.5.1 In practice: Specify a scalar as a parameter to an SQL statement -- Complete
the “Login” screen .................................................................................................. 223
11.5.2 In practice: Specify a pureQuery bean as a parameter to an SQL statement--
Complete the “Employee Information” screen ....................................................... 225
11.5.3 Special case scenarios for parameter types............................................... 227
11.6 Executing SQL statements that modify information in a database .................... 228
11.6.1 Retrieving generated keys .......................................................................... 228
11.6.2 In practice: Execute an SQL statement that modifies the database -- Complete
the "Change Employee Information" screen .......................................................... 229
11.7 Tooling Support for Annotated Methods and Generated Code ......................... 231
11.7.1 Generating XML file to override the SQL statements in interfaces ............ 231
11.7.2 EMFT JET template customization for code generation ............................ 232
11.8 Using static SQL with annotated-method style applications .............................. 233
11.8.1 Binding the SQL statements in the interfaces ............................................ 234
11.8.2 Running an annotated-method style application in STATIC execution mode
............................................................................................................................... 236
11.9 Advanced features ............................................................................................. 238
11.10 Summary.......................................................................................................... 238
11.11 Review questions ............................................................................................. 239
14 Getting Started with pureQuery

11.12 Exercise ........................................................................................................... 240


Chapter 12 - Stored Procedures .................................................................................. 243
12.1 Stored procedures: The big picture .................................................................. 243
12.2 The StoredProcedureResult interface ............................................................... 244
12.2.1 Getting the updated values of OUT and INOUT parameters ..................... 244
12.2.2 Getting the query results of the stored procedure ...................................... 245
12.2.3 Closing the StoredProcedureResult object......................................... 247
12.3 Executing SQL stored procedure calls in the inline style .................................. 247
12.3.1 In practice: Use the inline style to execute a stored procedure -- Complete the
“Increase Employee Bonuses” screen ................................................................... 249
12.4 Executing SQL stored procedure calls in the annotated-method style.............. 251
12.4.1 In practice: Use the annotated-method style to execute a stored procedure --
Complete the “Increase Employee Bonuses” screen ............................................ 252
12.5 Summary............................................................................................................ 253
12.6 Questions ........................................................................................................... 254
12.7 Exercise ............................................................................................................. 255
Chapter 13 - Handlers ................................................................................................... 261
13.1 Handlers: The big picture................................................................................... 261
13.2 Specifying handlers in the inline style ................................................................ 263
13.2.1 In practice: Specify a handler using the inline style -- Complete the “Company
Employees” screen ................................................................................................ 264
13.3 Specifying handlers in the annotated method style ........................................... 266
13.3.1 Specifying handlers by using the @Handler annotation ........................... 266
13.3.2 Specifying handlers as method parameters ............................................... 267
13.4 Writing handler implementation classes ............................................................ 268
13.4.1 Writing a ResultHandler<RES> implementation ........................................ 269
13.4.2 Writing a RowHandler<ROW> implementation........................................... 270
13.4.3 Writing a CallHandlerWithParameters<CAL> implementation .......... 272
13.4.4 How to write a ParameterHandler implementation ................................ 274
13.4.5 In practice: Write and specify a ParameterHandler implementation ..... 274
13.5 Summary............................................................................................................ 275
13.6 Review questions ............................................................................................... 276
13.7 Exercise ............................................................................................................. 277
PART V – BEST PRACTICES AND INTEGRATION..................................................... 279
Chapter 14 - Best Practices ......................................................................................... 281
14.1 Best Practices: The big picture .......................................................................... 281
14.2 Choose your style: inline vs annotated method style ........................................ 281
14.3 Perform Joins with Table collation ..................................................................... 282
14.4 Working with Exception categorization .............................................................. 283
14.5 Customizing the code generation templates ..................................................... 283
14.6 Recapture the SQL in your application .............................................................. 285
14.7 Custom handlers and annotated method style .................................................. 286
15

14.8 Summary ............................................................................................................ 286


Chapter 15 - pureQuery and pureXML ........................................................................ 287
15.1 pureQuery and pureXML: The big picture ......................................................... 287
15.2 Give control to the SQL layer............................................................................. 287
15.3 Give control to the data access API................................................................... 289
15.4 Give control to the application layer................................................................... 291
15.5 Summary ............................................................................................................ 293
Chapter 16 - pureQuery and JPA................................................................................. 295
16.1 pureQuery and JPA: The big picture ................................................................. 295
16.2 Static execution of JPA with pureQuery ............................................................ 295
16.3 Generating DB2 packages for JPA applications................................................ 296
16.4 Generating SQL statements .............................................................................. 297
16.4.1 Creating and binding the packages ............................................................ 299
16.5 Running a JPA application using pureQuery ..................................................... 300
16.5.1 Running the application in static mode ....................................................... 302
16.6 Summary ............................................................................................................ 302
Appendix A - Solutions to the review questions ....................................................... 305
Appendix B - Understanding the Sample Application .............................................. 313
B.1 A tour of the Human Resources Manager application user interface ................. 313
B.1.1 The “Login” screen ....................................................................................... 314
B.1.2 The “Main Menu” screen .............................................................................. 314
B.1.3 The “Employee Information” screen ............................................................. 315
B.1.4 The “Change Employee Information” screen ............................................... 316
B.1.5 The “Employee Report Chain” screen.......................................................... 318
B.1.6 The “Company Employees” screen .............................................................. 319
B.1.7 The “Increase Employee Bonuses” screen .................................................. 319
B.2 Using the sample application for the “In practice” sections ................................. 321
B.2.1 Packages in the GettingStartedWithPureQuery project .................... 322
B.2.2 Files in the GettingStartedWithPureQuery project............................. 324
B.3 Setting up the GettingStartedWithPureQuery project ............................... 325
B.3.1 Import the GettingStartedWithPureQuery project into your workspace325
B.3.2 Add pureQuery support to the project .......................................................... 328
B.3.3 Modify the javax.sql.DataSource objects to use your connection
information ............................................................................................................. 328
B.3.4 Run the Human Resources Manager application ........................................ 329
Appendix C - Up and Running with DB2 Express-C.................................................. 330
C.1 DB2: The big picture............................................................................................ 330
C.2 DB2 Packaging.................................................................................................... 331
C.2.1 DB2 Servers ................................................................................................. 331
C.2.2 DB2 Clients and Drivers ............................................................................... 332
C.3 Installing DB2 ...................................................................................................... 333
C.3.1 Installation on Windows ............................................................................... 333
C.3.2 Installation on Linux ..................................................................................... 334
C.4 DB2 Tools ............................................................................................................ 334
16 Getting Started with pureQuery

C.4.1 IBM Optim Development Studio ................................................................... 335


C.4.2 Control Center .............................................................................................. 336
C.4.3 Command Line Tools ................................................................................... 338
C.5 The DB2 environment ......................................................................................... 340
C.6 DB2 configuration ................................................................................................ 342
C.7 Connecting to a database ................................................................................... 343
C.8 Basic sample programs ....................................................................................... 345
C.9 DB2 documentation ............................................................................................. 345
Appendix D – Static SQL in DB2 ................................................................................. 347
D.1 What is static SQL? ............................................................................................. 347
D.2 Prerequisites for Static SQL ................................................................................ 348
D.3 Benefits of static SQL .......................................................................................... 348
D.3.1 Predetermined access plan for more consistent performance .................... 348
D.3.2 Package level security ................................................................................. 349
D.4 The mechanics of static SQL with DB2 ............................................................... 350
D.4.1 Precompiling and binding ............................................................................. 352
D.4.2 Precompiling and binding static SQL with pureQuery ................................. 352
D.5 Summary ............................................................................................................. 353
Appendix E - Options Files .......................................................................................... 355
E.1 Options files: The big picture ............................................................................... 355
E.2 Content of options files ........................................................................................ 355
E.3 Specifying option files in IBM Optim Development Studio .................................. 357
E.4 Specifying option files on the command line ....................................................... 358
E.4.1 Specifying an options file on the command line, without interfaces or
pureQueryXml files ................................................................................................ 358
E.4.2 Specifying an options file on the command line, in addition to interfaces or
pureQueryXml files ................................................................................................ 358
References ..................................................................................................................... 361
Resources ...................................................................................................................... 363
Web sites ....................................................................................................................... 363
Books ............................................................................................................................. 363
17

Preface
Keeping your skills current in today's world is becoming increasingly challenging. There are
too many new technologies being developed, and little time to learn them all. The DB2®
on Campus Book Series has been developed to minimize the time and effort required to
learn many of these new technologies. The content of this book is based in the features
available in the version 2.2.0.1 of IBM® Optim™ Development Studio and IBM Optim
pureQuery Runtime. At the time this book was ready for publishing, new features of
pureQuery became generally available. For more information about these new features,
refer to the “What’s New?” page in this link:

https://www-304.ibm.com/support/docview.wss?uid=swg27016961

Who should read this book?


This book is intended for anyone who needs to learn about pureQuery, IBM’s high-
performance data access platform. pureQuery delivers benefits in the entire spectrum of
the application life cycle, including the design, development, management and governance
stages. This book should be read by all individuals that participate in the stages of the
application life cycle, especially application developers and database administrators.

Before reading this book, it is recommended that you have some familiarity or knowledge
regarding topics addressed by the following books, also part of the DB2 on Campus Book
Series:

• Getting Started with Eclipse

• Getting Started with IBM Data Studio for DB2

• Getting Started with Java

• Getting Started with DB2 Express-C

How is this book structured?


This book is structured in five major parts:

• Part I provides an overview of pureQuery and contextualizes it in the enterprise


database application spectrum. Chapter 1 introduces pureQuery and describes its
18 Getting Started with pureQuery

main components: API, runtime, tooling and monitoring services. Chapter 2 covers
installation of IBM’s pureQuery.

• Part II covers the pureQuery tooling, available as part of IBM’s Optim Development
Studio product.

• Part III takes a step back and describes how pureQuery supports the broader
goals of security, performance and insight for new and existing Java™ and JDBC
applications. It covers topics such as client optimization for new and existing
applications and monitoring tools which give the application centric DBA insight
into layers of the runtime stack they have never been able to monitor before.

• Part IV digs into the internals of pureQuery. This part starts with Chapter 9, which
covers in detail the existing persistence and Object-relational mapping frameworks
and positions pureQuery among them. The next chapters describe the API,
runtime and monitoring services of pureQuery

• Part V covers pureQuery best practices and the integration of pureQuery with
existing technologies and frameworks.

Exercises are provided in selected chapters. Most chapters contain review questions to
help you learn the material; answers to those questions are included in Appendix A.

A sample application is also provided with this book and described in Chapter 4. The
source code for the application, as well as code samples developed throughout the book,
can be found in the provided zip file GettingStartedWithPureQuery.zip
accompanying this book.

A book for the community


This book was created for the community; a community consisting of university professors,
students, and professionals (including IBM employees). The online version of this book is
released to the community at no-charge. If you would like to provide feedback, contribute
new material, improve existing material, or help with translating this book to another
language, please send an email of your planned contribution to db2univ@ca.ibm.com with
the subject “pureQuery book feedback.”
19

Conventions
Many examples of commands, SQL statements, and code are included throughout the
book. Specific keywords are written in uppercase bold. For example: A NULL value
represents an unknown state. Commands are shown in lowercase bold. For example: The
dir command lists all files and subdirectories on Windows®. SQL statements are shown
in upper case bold. For example: Use the SELECT statement to retrieve information from a
table.

Object names used in our examples are shown in bold italics. For example: The flights
table has five columns.

Italics are also used for variable names in the syntax of a command or statement. If the
variable name has more than one word, it is joined with an underscore. For example:
CREATE TABLE table_name

What’s next?
In addition to the books in the section “Who should read this book?", we recommend you to
review the following books in the DB2 on Campus book series for more details about
related topics:

 Getting Started with DB2 Application Development

 Getting Started with Infosphere™ Data Architect

 Getting Started with SOA

The following figure shows all the different eBooks in the DB2 on Campus book series
available for free at ibm.com/db2/books
20 Getting Started with pureQuery

The DB2 on Campus book series


About the Authors 21

About the Authors


Vitor Rodrigues works at Google as a Software Engineer designing and developing tools
for the web. Prior to that, he spent several years as a Software Engineer at the IBM Silicon
Valley Lab working on Optim™ Development Studio and Data Studio products. Previously
held positions at IBM include Technical Enablement and Quality Assurance roles in the
Data Studio and DB2 pureXML organizations. Vitor graduated in Computer and Software
Engineering from University of Minho, Portugal. He is an IBM Certified Solution Developer
for XML and Related Technologies and an IBM Certified Database Administrator - DB2 9
DBA for Linux®, UNIX® and Windows. Vitor has co-authored several articles and tutorials
for developerWorks®.

Zeus Courtois is a Software Engineer at the IBM Silicon Valley Lab working on Optim
Development Studio for the the pureQuery tooling team. Previously, as an intern within
IBM, held positions in the Technical Enablement Team for DB2 pureXML and Data Studio.
Zeus has a bachelors degree in Computer Science and a Masters of Science in
Information Systems from Texas A&M Int'l University. Zeus has co-authored several
articles for the pureQuery tooling in IBM developerWorks.

Heather Lamb is a software engineer at IBM in Herndon, Virginia. She worked for three
years as a developer for the IBM Optim pureQuery Runtime and Optim Performance
Manager Extended Insight products. Currently she is a technical consultant with IBM’s
Global Business Services. Her subject of expertise is software development. She
previously worked as a software developer on IBM’s JDBC and SQLJ Driver, and spent
three years as a communications officer in the United States Air Force. She holds a
master’s degree in Computer Science from Stanford University.

Christina Sheets works as a software engineer for IBM. She is one of the developers of
the Optim pureQuery Runtime software. She attended the University of Florida, where she
received a master's degree in Computer Engineering, as well as a bachelor's degree in
Computer Science and Mathematics. Christina lives with her husband in California. In her
free time, she helps with various ministries at her church.
22 Getting Started with pureQuery

Kathryn Zeideinstein is a member of the Optim Solutions technical enablement team and
has responsibility for community building and communications with the technical
community. She has many years of experience with IBM starting out as an Information
Developer for DB2 for z/OS®, managing the SQL Standards team, managing editor for the
Information Management zone on developerWorks and as product manager and marketing
manager for several Information Management products. She has authored or co-authored
numerous article on developerWorks and in other publications, including topics ranging
from business intelligence to content analytics. She led the team the produced the DB2 On
Campus book Getting Started with Data Studio for DB2. Kathy holds a master’s degree in
Professional Writing from Illinois State University.
Contributors 23

Contributors
The following people edited, reviewed, provided content, and contributed significantly to
this book.

Contributor Company/University Position/Occupation Contribution

Vladimir SciSpike Founder External Review.


Bacvanksi Inferdata Owner and Vice
President

Kevin Univar Manager, Enterprise Exernal Review.


Campbell Architecture

Daniel Galvin Galvin Consulting, DB2 Consultant External Review.


Inc.

Petter Graff Inferdata Vice President and External Review.


Partner

Raul F. Chong IBM DB2 On Campus Review and guidance.


Program Manager

Christopher IBM, Silicon Valley Software Architect, Review and guidance.


Farrar Laboratory pureQuery runtime

Nazila IBM, Silicon Valley Software Developer, Review.


Malekpour Laboratory Optim Development
Studio

Nisha Nair IBM, Silicon Valley Software Developer, Review.


Laboratory Optim Development
Studio

Lakshman IBM, Lenexa Team Lead, Optim Review.


Sakaray Develpoment Studio

Mabel Thong IBM, Silicon Valley QA Engineer, Optim Review.


Laboratory Development Studio
24 Getting Started with pureQuery

Acknowledgements
We greatly thank the following individuals for their assistance in developing materials
referenced in this book:

Becky Nin for her guidance on the pureQuery tooling chapters.

Anshul Dawra for his guidance on pureQuery runtime for the tooling team.

Sonali Surange, for her guidance on the pureQuery tooling chapters and her several IBM
developerWorks articles that were a guide to the tooling chapters in this book.

Fay Wand et al, for the IBM developerWorks article “Integrating JPA and pureQuery:
Leveraging DB2 static execution for the Java Persistence API”.

Rafael Coss for his assistance in finding external reviewers for this book.

Natasha Tolub for designing the cover of this book.

Susan Visser for assistance with publishing this book.


25

PART I – OVERVIEW AND SETUP


Chapter 1 - Introduction to pureQuery
1
pureQuery software is a key differentiator of IBM Integrated Data Management solutions. It
provides a high-performance data access platform that makes it easier to develop,
optimize, secure, and manage data access.

In this chapter you will learn:

 The big picture: What is pureQuery?

 How pureQuery can optimize database access, improve developer productivity, and
help DBAs gain insight into the database interactions of applications

 What products deliver pureQuery technology

 How knowledge of pureQuery can help your career

 Web sites where you can get more information and join a community

1.1 The big picture: What is pureQuery?


pureQuery is a database access platform that includes features of interest to both
developers and DBAs. Indeed, pureQuery can help developers and DBAs work better and
more effectively together, leading to more efficient database access, reduced time to solve
problems, and improved ability to manage and monitor database applications.

In this section, we’ll define pureQuery as a platform and explain what we mean by that.
We’ll also go over the components of that platform and then discuss how aspects of the
platform get delivered to the public as software products. Note that although pureQuery
capabilities are strongest in support of Java application environments, there are benefits
from pureQuery to other environments such as .NET, and those benefits are planned to
grow over time.
28 Getting Started with pureQuery

1.1.1 What’s in a name?


pureQuery is the name IBM has chosen to represent a data access platform that can help
optimize and secure data access. It was first released publicly in October 2007 as part of
what was then known as the “Data Studio” family (now known as the “Optim™” product
family). (More on the history of pureQuery can be found on Wikipedia [1]).

Because you may be familiar with the term pureXML® from what you’ve read in Getting
Started with DB2 Express-C, it’s interesting to get a little background on how this data
access platform ended up with the name pureQuery. Stephen Brodsky, an IBM
Distinguished Engineer in the IBM Optim organization, in one of his blog entries, says it
best:

So how did this platform get the name pureQuery? It didn’t start out that way (as is
often the case with new products or technologies). We had two internal code
names for the project, Data Zero (because it’s the data access layer for Project
Zero) and JLinQ, because it compares very favorably with Microsoft®'s LINQ
initiative (all the power of database access without having to change the C# and
Visual Basic languages – we achieved all the major features of LINQ but stayed
pure standard Java™). pureQuery embraces the full database access without
watering down the SQL or database capabilities. It avoids least common
denominator approaches that dilute the ability to access what you really need in a
database and integrates all aspects of the life cycle in both runtime and tooling,
"Pure" means no compromises and first class Java-SQL-database integration.

As the project moved closer to release, it was time to choose a name. Because the
project represented application plus database integration at what we feel is the
best, truest form, without all the mess that sometimes bogs software down, early
users called it "pure data access" or "pure data query (PDQ)." The pure concept,
and the PDQ acronym, really resonated with the marketing team (the same team
that named pureXML), and the pureQuery name was born. [2]

It’s important to note here that since Steve wrote that blog entry, a subset of pureQuery
benefits have been extended beyond Java data access, including to .NET, and by the time
this book is published, CLI. The focus of this Getting Started book is on the support for
Java environments.
Chapter 1 – Introduction to pureQuery 29

1.1.2 What do we mean by platform?


IBM calls pureQuery a “platform” because it seems to be the best word to express the
vision of pureQuery as a technology that spans the data management lifecycle. In other
words, there are aspects of pureQuery that are embedded in design, development, test,
deployment, monitoring, and optimization. (For more information about how IBM defines
the data management lifecycle, see the e-book Getting Started with Data Studio for DB2.)

pureQuery consists of the facets shown in Figure 1.1, which can be used as needed for
any particular project or task and which are delivered in specific products related to those
tasks.

Figure 1.1 - Facets of pureQuery data access platform

 Application programming interfaces (APIs), built for ease of use and for
simplifying the use of best practices for enhanced database performance when
using Java.

 A runtime, which provides optimized and secure database access

 An Eclipse-based integrated database development environment (IDE) for


enhancing development productivity, improving data access performance during
development, and improving collaboration between developers and DBAs

 Monitoring services, to provide developers and DBAs with previously unknown


insights about performance of Java and CLI database applications.
30 Getting Started with pureQuery

Let’s look at each of these facets in detail.

1.2 pureQuery application programming interfaces


The pureQuery APIs are built for ease of use, enhanced productivity, and to encourage use
of best practices for Java development when accessing DB2, Informix® Dynamic Servers
or Oracle® databases. These APIs are available at development time to optimize execution
using Optim pureQuery Runtime. Optim Development Studio provides integrated tooling to
support quick and easy application development using the pureQuery APIs. A full
pureQuery runtime license is required for the resulting applications in production
deployments.

When compared with JDBC, the pureQuery APIs allow developers to build applications
with far less handwritten code yet still with greater control over database access than
provided by many object-relational frameworks.

pureQuery directly utilizes SQL for relational database access, in-memory collections, and
XML, so developers do not need to learn a new query language.

The pureQuery API provides both inline SQL and Java annotated method styles of
programming. Both styles are designed to be significantly easier to use than JDBC. Each
style has its advantages depending on the use case. For more details on choosing a style,
see Chapter 15.

The inline style is similar to JDBC in that the SQL is defined within the Java code as a
string object, however unlike JDBC, pureQuery supports an editing environment that is
SQL aware, and pureQuery’s content assist makes it easy to add accurate, error-free SQL.
Inline style also provides a variety of methods which implement common database access
patterns to provide value over JDBC. The inline style is described further in Chapter 5.

In the annotated method style, described in Chapter 6, the SQL is provided as separate
annotations and is invoked via Java methods, as part of a user-defined interface. The
annotated method style (also known as method style) has some advantages. It shields the
application from specific interface implementations, which means you can switch to another
persistence technology if needed without changing your program. Also, with method style,
your application can use static SQL when accessing DB2 databases once it has been
bound, with a simple switch of a runtime flag, which means developers can develop and
Chapter 1 – Introduction to pureQuery 31

test their applications using dynamic SQL, and with no additional changes, that same
application can be bound and take advantage of the performance, security, and stability of
static SQL execution (described in Appendix D).

Note:
If you are not familiar with static SQL and the benefits of using it, see Appendix D or the
article entitled No excuses database programming for Java at
ibm.com/developerworks/data/library/dmmag/DBMag_2008_Issue2/NoExcusesDB/

The pureQuery APIs are designed with Web 2.0 in mind -- custom result handlers map
results to plain old Java objects (POJOs), XML, or JavaScript Object Notation (JSON).

In addition to improved ease-of-use, performance is easier to build into the application


using pureQurey. For example, it’s easy to specify retrieval of only the first row of results,
to reduce network and processing time for time-critical user interfaces. Other options for
reducing network cost include the use of batching updates across tables, known as
heterogeneous batching, and by the ability to query and join across in memory Java
collections and the database.

1.3 pureQuery runtime


The pureQuery runtime is the engine that provides improved performance, security, and
manageability and is delivered in the product Optim pureQuery Runtime. You deploy the
runtime on the application server (or wherever the application runs). The pureQuery
runtime provides flexible access from a wide variety of frameworks and data access
mechanisms, as shown in Figure 1.2.
32 Getting Started with pureQuery

Figure 1.2 - pureQuery works with a wide variety of new or existing applications

For Java applications, pureQuery runtime enhancements are independent of the


deployment components and environment. This means pureQuery runtime also enhances
applications running within servers such as WebSphere® and other popular Web
application servers. pureQuery can accelerate new Java applications that use the
pureQuery API, or existing Java applications, even those applications in which the SQL is
generated by a framework, such as Hibernate or OpenJPA. For more information on
pureQuery integration with JPA, please refer to Chapter 16 and our Resources section.

For both pureQuery applications and for those that are written using a framework, the
pureQuery runtime captures the application SQL and related metadata for use by
developers or DBAs to share, review, analyze, optimize, revise, and restrict SQL execution.
There are a few extra steps involved to gathering this information in a process called client
optimization, which is described further in Chapter 9.

If the target database is DB2, the captured SQL can be bound into packages for static
execution to improve performance, enhance security, improve manageability, and reduce
costs.
Chapter 1 – Introduction to pureQuery 33

Client optimization enhances OpenJPA applications, just like JDBC applications, in a wide
variety of environments. However Open JPA applications on WebSphere Application
Server V7 or later releases that are accessing DB2 can take advantage of enhanced
integrations with pureQuery runtime to quickly get those applications up and running
using static SQL and heterogeneous batching capability when accessing DB2 data, without
requiring client optimization steps. You can find out more about this capability in Chapter
16.

For .NET applications that access DB2, use the Optim pureQuery Runtime to enable a
command-line-based capture and bind of dynamically running SQL statements to improve
performance, security, and manageability.

Note:
This e-book is focused on Java, but if you’re interested in the capabilities that exist for
.NET, see the developerWorks tutorial entitled Optimizing your existing .NET applications
using pureQuery here:
http://www.ibm.com/developerworks/data/tutorials/dm-0903optimizenet/

1.4 pureQuery application development environment


The pureQuery development environment is currently focused on Java application
development and optimization and is delivered in Optim Development Studio, an integrated
development environment based on open source Eclipse. This is the product you will be
using to do the exercises in this book. Optim Development Studio supports pureQuery
development against the DB2 family and Informix® Dynamic Server. A screenshot is
shown in Figure 1.3.
34 Getting Started with pureQuery

Figure 1.3 - Optim Development Studio provides enhanced tools for Java database
access development and tuning

Optim Development Studio includes the following key productivity features:

 As shown in Figure 1.3, you can visualize linkages among the Java source code,
the SQL (generated or not), and the database objects themselves to speed up
problem isolation and dependency analysis. An important benefit of this capability is
helping DBAs speak to developers in a language developers understand. This is
important in real world environments in which developers are often insulated from
the SQL that gets issued to the database when object-relational mapping tools are
used.
Chapter 1 – Introduction to pureQuery 35

 As shown in Figure 1.3, analyze potential SQL performance “hotspots” quickly and
easily directly from your desktop.

 Collaborate with peers to review and optimize application SQL. You can launch
Optim Query Tuner, a separately available product, directly from the development
environment to get expert tuning advice for DB2.

 Show SQL errors in the Java editor automatically without having to execute the
application as shown in the partial screenshot below in Figure 1.4.

Figure 1.4 - Integrated SQL error and semantic checking in Optim


Development Studio Java editor

 Run the application’s SQL without having to execute the application, even if it
contains parameters -- just point and click

 Generate a data access layer for common operations (create, read, update, delete
(CRUD)) without writing code

 Bind SQL packages to DB2 for static execution

 Create and debug Java and SQL Stored procedures

 Explore the structure and data of existing databases

Optim Development Studio includes a copy of the pureQuery runtime for use on your
workstation. Use Optim Development Studio on its own to build better Java applications
more quickly, or combine it seamlessly with other Eclipse-based tools you may need, such
as Data Studio, Optim Database Administrator, InfoSphere™ Data Architect, or Rational®
Application Developer for WebSphere Software.

1.5 pureQuery monitoring services


pureQuery also delivers client-side monitoring capabilities. This client side monitoring
capability provides insights that prove useful for developers and DBAs. For developers,
36 Getting Started with pureQuery

monitoring services in pureQuery enable the display of performance metrics in Optim


Development Studio, as you saw in the screenshot shown in Figure 1.3.

For DBAs, there are even more statistics being gathered and displayed in Optim
Performance Monitor using the Extended Insight Feature that help them understand the
activity in the software stack across the database client, the application server, and the
network.

Before pureQuery, insight into the Java driver stack and the ability to see what line of a
Java application was executing SQL was unavailable for DBAs. Traditional database
monitoring tools listen on the server side only. They watch and report events that happen
inside the database server, e.g. buffer pool hits, cache hits, lock contention, etc. But they
have no insight into how the details of the Java application itself affected the database
time, the amount of time spent in the network, the connection pool in the application server,
and so on.

Why is that a problem? Because, without a unified view across the stack, it is hard for a
DBA to tell where the problem resides. The application says it issued the query so it must
be the database server’s problem. So the DBA is often the one trying to figure out where
the problem is and/or working with the network administrator, the systems administrator,
and the application developer comparing notes and traces to isolate the issue.

pureQuery, as provided in the Optim Performance Manager Extended Edition, Extended


Insight Feature, provides correlation information that enables tracking of performance
information for any particular database transaction across the entire software stack. This
enables DBAs to quickly assess the problem source as well as provide a more realistic
assessment of response time. With Extended Insight (EI), the Java application clients are
now sending additional data to your performance monitor, with information like time spent
in application, in connection pooling, in the driver, or in the network, as shown in Figure
1.5.
Chapter 1 – Introduction to pureQuery 37

Figure 1.5 - pureQuery client monitoring services as delivered in DB2 Performance


Expert Extended Insight Feature

This capability provides a fundamental shift from traditional monitoring. Now DBAs have an
end-to-end database monitoring solution for a complete view of performance across the
database client, the application server, the database server, and the network between
them. And that information can be displayed in graphs and charts for easy identification of
misbehaving transactions.

DBAs can now:

• Monitor performance indicators that better reflect end user experience and
proactively detect negative trends in:

• Response times for database APIs

• Network congestion between the application and the database, or

• Other factors key to sustaining service level agreements

• See where workloads, transactions, and SQL requests spend their time across the
database client, the application server, the database server, and the network
between them.
38 Getting Started with pureQuery

• Isolate problems to the correct layer in the stack, including visibility into database
related performance indicators in WebSphere application servers

With these insights, problems that took days to isolate before can now be found in minutes.
The problems can be solved by one person, rather than having to route a problem from
DBA to net admin, to AIX and WAS admin, to developer, just to try to gather enough
information and skills to investigate every layer of the stack.

1.6 Career path


Because the vision of pureQuery is to support a wide variety of heterogeneous database
environments, learning the tools and APIs associated with pureQuery can help you be
more productive as a developer or DBA in an environment where support of mixed
databases is required.

Application developers who use the pureQuery API can build applications that run both on
DB2 (and which can easily be converted to static SQL for optimized applications) and on
Informix Dynamic Server and Oracle databases. Additional databases are planned to be
added to this list over time. And the process to optimize existing Java applications using
client optimization is supported across all those databases.

In addition, the emphasis on performance in the development cycle with pureQuery will
help application developers grow database and query tuning skills that can help them grow
to a DBA or specialized query tuning position.

1.7 The pureQuery community


Because pureQuery is a platform that can span a variety of data servers, programming
languages, and IT roles, pureQuery will benefit a wide variety of communities – any of the
DB2 communities, Oracle communities, or Java development communities for example.

There is also a developerWorks discussion forum on Optim Development Studio and


pureQuery that many people in the community and in the software labs monitor and
respond to at
http://www.ibm.com/developerworks/forums/forum.jspa?forumID=1086&categoryID=19
Chapter 1 – Introduction to pureQuery 39

1.7.1 Popular community Web sites


IBM developerWorks hosts technical articles and tutorials about pureQuery and Optim
Development Studio at http://www.ibm.com/developerworks/data/products/devstudio/

A great resource is the Integrated Data Management community space (Figure 1.6) that
aggregates links to downloads, forums, blogs (such as the Integrated Data Management
experts blog), technical articles, videos, and more, in a single location at
http://www.ibm.com/developerworks/spaces/optim.

Figure 1.6 - Integrated Data Management community space

When you go to the community space, you will see a variety of portlets that contain links to
forums, videos, and more. There is a tab on the space that includes links to all downloads,
including Optim Development Studio, which contains the pureQuery runtime for
development use on your workstation. And there is a tab with links to many existing
articles and tutorials on using pureQuery capabilities as delivered in the Optim product
family.
40 Getting Started with pureQuery

Finally, the pureQuery platform page on ibm.com provides a resource to keep you current
on pureQuery products, benefits, performance, and FAQs.

http://www.ibm.com/software/data/optim/purequery-platform/

1.8 Competitive products


Because pureQuery is a platform, it serves to complement some existing technologies
while competing in other areas on a product level. If we focus on Java data access rather
than products such as performance monitors, pureQuery is complementary to Java
frameworks.

Figure 1.7 positions Java data access technologies on a continuum from those on the left
that are very data-centric, that is, for developers who want and need more control over the
data access code, to those on the right, that provide ease-of-use features for object-
oriented programmers but which provide generally less control over what SQL is
generated. The right side of the continuum often provides slower data access
performance.

Figure 1.7 - pureQuery in the context of other Java development environments


Chapter 1 – Introduction to pureQuery 41

Because coding in JDBC is so tedious, it only makes sense that Java developers would
turn to frameworks such as Spring, iBatis (now called myBatis), and JPA to help with their
object-relational mapping, among other things. pureQuery does provide productivity boosts
that many are looking for in a Java framework, but it does not provide the full persistence
or container management associated with Hibernate or JPA. As a framework alternative,
pureQuery attempts to provide a balance point between enhanced productivity and full
SQL control.

However, pureQuery is different from other frameworks in that it can complement any
existing framework. Developers can continue to use their framework of choice and add
pureQuery to get the added benefits of performance enhancement, improved security, and
improved manageability. Integrations with other frameworks are described in Part V.

Of course, if you are writing new applications and don’t require full container management,
then pureQuery is an excellent choice in terms of performance and productivity when your
data is stored in DB2, Informix Dynamic Server, or Oracle databases.

As shown in the figure above, pureQuery attempts to provide the best of both worlds:

 It gives the developer the ability to fully control the SQL where needed

 It helps the developer create good SQL without having to learn a new query
language

 It offers a very simple API

 It provides basic object-relational mapping at development time, with no need to


map complex relationships between entities and objects

 It can provide performance, security, and manageability benefits to those who


continue to use full persistence frameworks, using client optimization.

As mentioned earlier, pureQuery can use client optimization to take any existing Java
application, even if coded in a framework, and “uplift” it so that those applications can
obtain many of the same benefits they would get when coding to the pureQuery APIs,
notably static SQL and enhanced visualization for improved problem determination. The
client optimization technology can help regardless of whether your application is a
complicated Hibernate application or an out-of-the-box Java/JDBC program for which you
may not even have the source code.
42 Getting Started with pureQuery

1.9 Exercises
We will use this first exercise to ensure your environment is ready to install Optim
Development Studio and to ensure you have all the required software downloaded for
future exercises. Follow these instructions:

1. Ensure your computer is using one of the supported Windows or Linux operating
systems as described in this technote: http://www-
01.ibm.com/support/docview.wss?rs=4014&uid=swg27015710

An IBM or Sun® Java Runtime Environment at version 1.5.0 or higher must be


installed on your system and for development you need the IBM Data Server
Driver for JDBC and SQLJ V3.57. For applications using the db2jcc4.jar file: IBM
Data Server Driver for JDBC and SQLJ V4.7 or later. (These prerequisites are all
included with Optim Development Studio for development purposes).

2. Download Optim Development Studio. If you do not already own it, you can
download a 30-day trial from:
http://www.ibm.com/developerworks/downloads/im/datastudiodev/. If you are a
university student, your university may have an academic license to use it – if not,
use the trial version above. You will learn how to install the product in Chapter 2.

3. If you don’t already have DB2, you can download DB2 Express-C. We will use the
free version of DB2, DB2 Express-C, for the examples used in this book. To
download the latest version of DB2 Express-C, click this link and choose the
appropriate file to download for the operating system you are using.

4. Explore the Optim Development Studio and pureQuery information topics, which
are located in the Integrated Data Management Information Center at this location.

1.10 Review Questions


1. What are the four facets that comprise the pureQuery platform?

2. True or false: pureQuery client monitoring capabilities are only of value to DBAs?
Why or why not?

3. True or false: pureQuery competes directly with Java frameworks such as


Hibernate.
Chapter 1 – Introduction to pureQuery 43

4. For which development environments can pureQuery provide benefit?

5. What is the name of the capability that enables existing Java, .Net, or CLI
applications to take advantage of pureQuery static SQL execution capabilities?

6. Which of the following products delivers the pureQuery development tooling?

A. Data Studio

B. Optim Development Studio

C. Rational Application Developer for WebSphere Software

D. Optim Performance Manager Extended Edition

7. Which of the following products delivers pureQuery client monitoring capabilities


for use by DBAs in monitoring database and application interactions?

A. Data Studio

B. Optim pureQuery Runtime for z/OS

C. Optim Performance Manager Extended Edition

D. DB2 Application Development Client

8. Which of the following capabilities is not included in Optim Development Studio:

A. Visualization of SQL performance “hot spots”

B. Correlate SQL statements with originating line of Java source code

C. .NET visual development

D. Generate data access layer for create, read, update, and delete operations

9. Which product is required for a production application to take advantage of


pureQuery benefits, including client optimization, heterogeneous batching and
other APIs, or static execution?

A. Optim Development Studio

B. Optim pureQuery Runtime

C. DB2 Application Development Client

D. WebSphere Application Server


44 Getting Started with pureQuery

10. Which of the following database servers cannot be accessed using pureQuery at
the time of publication?

A. Oracle

B. DB2 for zOS

C. Informix Dynamic Server

D. Microsoft SQL Server


Chapter 2 - Installing pureQuery (Optim Development
2
Studio)
In this chapter you will learn how to install the pureQuery development capabilities in your
system, including the runtime, integrated development environment and the API. This
whole package is included for development use in Optim Development Studio, which can
be downloaded as a no-charge, 30-day trial package, and this is what you will learn how to
install in this chapter.
If you want to move a pureQuery application into production or do any testing on a
nondevelopment machine, you will also need to obtain the separate package called IBM
Optim pureQuery Runtime. For information on how to obtain the pureQuery runtime
standalone installation package, please contact your Academic Initiative representative or
your IBM Sales Representative.

2.1 Installation: The big picture


Optim Development Studio can be installed either using the Launchpad GUI, which
launches IBM Installation Manager, or silently, which means you create a response file of
your chosen installation options, and then run that response file. Silent install is mainly
useful for larger installations in which installation must be pushed out to many machines.
This chapter focuses on the Launchpad installation. It assumes you do not already have
IBM Installation Manager installed. This means that an installation of Optim Development
Studio will also install IBM Installation Manager, which can be used later to install other
IBM products. Figure 2.1 shows the Optim Development Studio Launchpad welcome
screen:
46 Getting Started with pureQuery

Figure 2.1 - Click “Install Product” to launch IBM Installation Manager

For an overview of the IBM Installation Manager package, refer to the book Getting Started
with Data Studio for DB2, Chapter 3.

2.2 Installation prerequisites


With respect to operating system version and level requirements, Optim Development
Studio is available on Linux (32 bit) and Windows 2003, 2008, XP, and Vista. As for
hardware requirements, installation of Optim Development Studio requires a minimum of
1GB RAM memory and 750MB of disk space.

The installation process for Optim Development Studio requires one of the following web
browsers: Microsoft Internet Explorer 6 SP1, Mozilla 1.6 or 1.7, and Firefox 2.0 or higher.

The data sources supported by Optim Development Studio 2.2.0.1 are:


• DB2 for Linux, Unix and Windows versions 8.2, 9.1, 9.5 and 9.7
• DB2 for iSeries® V5R3 and V5R4
Chapter 2 – Installing pureQuery (Optim Development Studio) 47

• DB2 for z/OS versions 8.1 and 9.1


• IBM Informix Dynamic Server versions 10.0, 11.1 and 11.5
• Oracle Database versions 10g, 10g R2 and 11g

For the latest information on Optim Development Studio system requirements, review the
product’s web page: http://www.ibm.com/software/data/optim/development-studio/

2.3 Installing Optim Development Studio


A free 30-day trial of ODS can be obtained from the product’s download page. You can
download three variants of the package:
• Web install using IBM Installation Manager (IM): It includes IBM Installation
Manager install package and ODS product information that lets you install ODS
from within IM.
• Web install if you already have IBM Installation Manager installed: this
package provides all the information required to install ODS from an Installation
Manager installation already present in your system.
• Local install using Download Director or HTTP: this package contains all the
binaries that make ODS and should be used when you want to install the product
from your local drive instead of using a web repository.
These installation packages are highlighted in figure Figure 2.2.

Figure 2.2 - Optim Development Studio installation packages


While web install reduces the amount of information that needs to be downloaded, local
install provides more flexibility, as you can download the package at one time and install it
later, even without internet connection. For that reason, we will be describing that
installation method. From the product’s download page, download the package highlighted
in Figure 2.2, Local install using Download Director or HTTP, and proceed to the next
section, where we describe the installation process in detail.
48 Getting Started with pureQuery

2.3.1 Installing from the launchpad


As stated earlier, starting the installation process from the Launchpad causes Installation
Manager to be automatically installed if it is not already on your computer. In most cases,
the default settings are sufficient, so all you need to do is accept the license, click the Next
button until the Finish button is active, and then click the Finish button. After a few minutes,
your installation will be complete and Optim Development Studio will be up and running!
These are the detailed installation instructions for Optim Development Studio:
1. After you unzip the download package, start the launchpad as follows:
 Windows: Execute the setup.exe file located in the
ibm_optim_dev_studio_v22_win directory as shown in Figure 2.3.

Figure 2.3 - Click setup.exe from unzipped Data Studio package


 Linux: Execute the setup command from the root path where you’ve put the image.

2. Select a language and then click OK. The Welcome screen comes up. In the left
pane, select Install Product as shown in Figure 2.4.
Chapter 2 – Installing pureQuery (Optim Development Studio) 49

Figure 2.4 - Launchpad Welcome Screen


This launches Installation Manager. You will then see a screen that lets you choose which
packages to install.
3. Assuming you don’t already have Installation Manager on your machine, you will
select the default settings to install both Installation Manager and Data Studio as
shown in Figure 2.5. Then click Next.
50 Getting Started with pureQuery

Figure 2.5 - Install both Installation Manager and Data Studio packages
After accepting the license, click Next. You will then be presented with a screen that lets
you specify the location directory for shared resources and for Installation Manager itself.
You can keep the defaults; however, you’ll want to take note of the fact that you should
choose a drive with more space than you think you need just for Optim Development
Studio in case you decide to shell-share with other Eclipse-based products in the future,
4. As shown in Figure 2.6, take the default and then click Next.
Another Random Scribd Document
with Unrelated Content
ollut enää enempää kuin puolet, 500 miestä, jäljellä. Nämät eivät
ajan pitkään riittäneet puolustamaan linnaa niin suurta ylivoimaa
vastaan. Liettualaiset pääsivät vihdoin väkirynnäköllä vallinrikon läpi
ja levisivät ympäri kaupunkia, tappaen kaikki, mikä eteen sattui.
Rosen viimeisten miestensä kanssa vetäytyi erääseen torniin. Mutta
siinäkin oli pitempi vastarinta mahdoton, se oli silminnähtävää;
antautuminen oli myös hänen mielestänsä yhtä mahdotonta, koska
se olisi tahrannut hänen joukkonsa urhouden mainetta. Hän
räjähdytti senvuoksi tornin ilmaan, syösten vihollisen joukosta
enemmän kuin 400 kanssansa kuolemaan.

Näin loppuu tämä sankarirunon kaltainen kertomus Suomen


rakuunain töistä Puolan sodassa. Rykmentti koottiin sitten uudestaan
Suomessa, vaan sitä ei enää lähetetty tälle sotatantereelle.

9. Marssi Juutinmaalle.

Ikäänkuin ei Ruotsilla olisi ollut jo yltäkyllin kolmessa vihollisessa,


tuli nyt vielä neljäskin lisäksi. Tanskan kuningas ja kansa olivat jo
kauan salavihalla katselleet Ruotsia. He eivät voineet unohtaa
kolmenkymmenvuotisen sodan aikana menetettyjä maakuntiansa ja
pelkäsivät, että heidän vanha kilpaveljensä voittojensa kautta
Puolassa tulisi vielä mahtavammaksi, heille vielä vaarallisemmaksi.
Kun he sitten näkivät Kaarle X:nnen ahdingossa venäläisten,
puolalaisten ja itävaltalaisten välillä, katsoivat he nyt tilaisuuden
edulliseksi kostotuumiensa täyttämiseen. He julistivat siis sodan
kesäkuun alussa 1657.
Vaara tästä päällekarkauksesta ei ollut vähäinen, sillä kun kaikki
sotaväki taisteli kaukaisissa sodissa, oli Ruotsi melkein suojatonna.
Mutta Kaarle X:nnen lujuutta ei voinut mikään vaara masentaa.
"Kyllä Jumala meitä auttaa", vakuutti hän, "kunhan me itse autamme
itseämme!" Hän antoi valtaneuvoskunnalle käskynsä Ruotsin
puolustuksesta, ja läksi itse Tanskaa vastaan Saksan puolelta, samaa
tietä kuin Torstensson edellisessä sodassa.

Tämä retki kävi vielä nopeammin, vielä paljoa voitollisemmin, kuin


mikään edellinen. Kesäk. 20 p. oli Kaarle X saanut tiedon
tanskalaisten rauhanrikkomisesta, 26 p. hän jo läksi liikkeelle
Preussistä, ja heinäk. 18 p. hän seisoi armeijansa kanssa Holsteinin
rajalla. Marssi oli ollut niin kiireinen, että sadottain hevosia oli
uupunut ja kuollut tielle.

Hampuriin jouduttuansa tarkasti kuningas sotavoimaansa. Se ei


ollut suinkaan loistavan näköinen. Vaatteet olivat likaiset, ryysyiset,
miehet ruudinsavusta ja ilmanvaiheista mustuneet. Mutta jokaiseen
repaleeseensa he olivat kätkeneet runsain määrin kultakolikoita,
joilla he täällä pian saivat komeammat pukimet. Ei tämä sotajoukko
näyttänyt myöskään peloittavalta suuruuteensa nähden. Ainoastaan
6-8,000 miestä oli Kaarle X tuonut kanssansa Puolasta.[4] Siinä
olivat nyt melkein ainoat tähteet tuosta suuresta, kaksi vuotta
takaperin sinne viedystä armeijasta. Uplannin rykmentistä esim.
seisoi enää rivissä vain 380 miestä alkuperäisistä 1,200:sta. Mutta
näistä tähteistä oli joka mies kestänyt parissa kymmenessä tulisessa
taistelussa. Ilolla he nyt taas menivät uusiin verilöylyihin, huolimatta
vihollisen ylivoimasta. "Alinomaisten voittojen kautta", kirjoitti eräs
heidän päälliköistään, "ovat he kokonaan unohtaneet, miten voi tulla
voitetuksi." Eipä kumma, jos Kaarle X, tämmöisten urhojen kanssa
mennessään sotaan, mietti vain sitä, miten paljon ja mitä maakuntia
rauhanpäätöksessä pitäisi ottaa Ruotsin omaksi.

Hampurissa saatuansa vielä muutamia tuhansia pestattuja


saksalaisia sotamiehiä lisään, marssi nyt kuningas elok. 3 p.
Holsteiniin. Hämmästyneet tanskalaiset, vaikka miesluvultaan
voimallisemmat, eivät paljon yrittäneetkään vastarintaa. Linnoitettu
Itzehoen kaupunki ammuttiin sytyksiin, ja Tanskan valtamarski
armeijansa kanssa sitä vain katseli, sormea nostamatta. Samoin
valloitettiin muutkin Holsteinin suojaksi laitetut varustukset melkein
miekanlyönnittä. Parin, kolmen viikon kuluttua oli koko Tanskan
mannermaa voittajien käsissä. Siellä oleva Tanskan armeija oli
melkein hävitetty; ainoastaan 6,000 miestä oli pelastunut vahvaan
Fredriksoddeen Fyenin saarta vastapäätä, Pienen Beltin rannalle.

Tämäkin linna heti saarrettiin, mutta ei kukaan voinut arvata sen


valloittamista mahdolliseksi, koskei piirittäjien luku ollut niinkään
suuri kuin piiritettyjen. Sitä suurempi oli yleinen kummastus, kun
yhtäkkiä tuli sanoma, että Ruotsin lippu liehui Fredriksodden valleilla.

Pimeinä syksyöinä nelin ryömin oli everstiluutnantti Dahlberg


erään kumppaninsa kanssa käynyt useamman kerran
tiedustelemassa linnan varustuksia. Sen jälkeen kuin niistä täten oli
saatu tarkka tieto, ja kun vielä oli saapunut vähän lisäväkeä,
päätettiin yöllä lokakuun 23:tta päivää vasten yrittää rynnäkköä.
Koska piirittäjillä oli jalkaväkeä ainoastaan vähän yli puolet
verrattuna linnanväkeen, täytyi nyt, vastoin tavallisuutta, ottaa
ratsumiehetkin avuksi tähän heille outoon työhön. Rynnäkkö tehtiin
kolmella eri joukolla. Eteläisimpään osastoon kuului pari
ratsurykmenttiä, jotka kaalasivat vallin jatkoksi mereen juntatun
kahden hakuliaidan ympäri. Kolmannen, viimeisen hakulin kohdalla
havaittiin vesi liian syväksi, jonka tähden he kirveillä kaasivat
aituuksen maahan ja siten pääsivät siltä puolelta aivan suojattoman
kaupungin keskelle. Sillä välin myös tämän saman osaston jalkaväki
sekä toinen osasto olivat onnellisesti kiivenneet vallille. Pahinta
vastarintaa tehtiin pohjoisempana, missä nyt kenraaliksi korotettu
Behrends oli johtajana. Hänen petardi-miehensä, jonka oli ruudilla
räjähdytettävä portti auki, haavoitettiin. Täten sai vihollinen aikaa
tässä kohdassa paremmin järjestää puolustusta. Vaan Behrendsin
väki, jalkaisin taistelevia ratsumiehiä kaikki tyyni, ryntäsi sittenkin
uljaasti ja pääsi viimein vallille. Molemmat suomalaiset rykmentit
olivat ensin seisoneet jouten varaväkenä; vaan kun portti oli saatu
auki, ajoivat he ratsain kaupunkiin ja tekivät tanskalaisten häiriön
täydelliseksi. Aamun koittaessa oli koko linna valloitettu, sen
puolustajat suureksi osaksi hakatut maahan tai hajoitetut.
Ainoastaan 2,000 miestä seisoi vielä, ase kädessä, niemen
äärimmäisessä päässä; mutta niidenkin täytyi siellä antautua
vangeiksi, koska ei ollut laivoja, millä saariin päästä. Saalis oli
ääretön. Puhumattakaan kaikista sotatarvevaroista, jotka tulivat
kuninkaan osaksi, sai jokainen sotamieskin kantaa pois suuret
taakat; sillä koko maakunta oli tuonut tänne kalleimmat tavaransa
siinä varmassa toivossa, että Fredriksoddea olisi mahdoton valloittaa.

10. Retki Beltien yli ja Roskilden rauhansovinto.

Vaikka Tanskan sodan alku oli näin loistavasti menestynyt, oli


Ruotsin armeija kuitenkin sangen vaarallisessa tilassa. Paljon syytä
oli pelätä, että yhteenliittyneet puolalaiset ja itävaltalaiset, kenties
myös lisäksi vielä brandenburgilaisetkin, jotka par'aikaa jo hieroivat
sovintoa edellisten kanssa, tulisivat kaikki yhdessä Juutin
niemimaalle. Silloin olisi tuo pienoinen, vaikka valittukin, joukko ollut
ikäänkuin satimessa ja vihdoin olisi sen täytynyt kukistua semmoisen
ylivoiman alle. Tästä vaarasta pelasti sen kuitenkin Kaarle X:nnen
harvinainen luonne ja hänen oma rohkeutensa.

Vuoden 1658 alku toi mukanansa tavattoman kovan talven.


Tammik. 9 p. tuli hirmuinen lumituisku ja ankara pakkanen, joita
sitten lakkaamatta kesti kolme viikkoa. Puhurin poika

jopa suureksi sukeutui, kovin kasvoi kauheaksi, kylmi silloin


täyden kylmän, väkipakkasen paleli.

Jäätyipä itse Pieni Beltikin, tuo leveä merenrauma Juutinmaan ja


Fyen-saaren välillä, jota ihmettä ei aina sadassa vuodessakaan saada
nähdä. Kuningas, neuvokkaana kuten aina, kokosi kiireesti väkensä
salmen rannalle ja tutkitti jään vahvuuden. Sen havaittiin hyvin
kannattavan Brandsöhön, pieneen, rauman keskellä olevaan saareen
asti; mutta saaren takana, missä kova virta käypi, ei ollut tuohon
uuteen siltaan luottamista. Paitsi sitä oli toisella rannalla 1,500
talonpoikaa ahkerassa työssä, jään sahaamisella pitämässä auki
leveätä juopaa. Ja heidän takanansa seisoi melkein 4,000 miestä
tanskalaista sotaväkeä, valmiina kuumalla löylyllä vastaanottamaan
niitä, joiden onnistuisi päästä kylmän kylvyn läpi. Pelotonta Kaarle
X:ttäkin epäilytti; hän lähetti Dahlbergin Fredriksoddeen tutkimaan,
olisiko kenties siellä parempi. Tammik. 30 p., anivarhain aamulla
palasi Dahlberg ja sanoi ylimenon Fredsiksodden kohdalla
mahdolliseksi. Mutta samassa tuli myös tieto, että edellisen yön
ankara pakkanen oli Brandsön takaisen jään tarpeeksi vahvistanut.
Kaarle X tietysti valitsi mieluummin lähemmän paikan, vaikka siinä oli
lukuisa vihollinen vastassa.
Päivän koitteessa kulki koko ratsuväki Brandsön saareen, josta
Wrangel oikeanpuolisen kyljen kanssa oitis marssi edemmäksi.
Virtapaikalle tultua hajosivat rivit, niin että rinnakkain kulkevien
välille jäi leveänlainen loma. Paitsi sitä hyppäsivät ratsumiehet alas
hevosten selästä ja jatkoivat tietänsä jalan, talutellen ratsujansa
jäljestään, ettei kahdenkertainen paino kohtaisi yhtä paikkaa.
Sittenkin painui ja keikkui jää peloittavalla tavalla koko ajan heidän
allansa. Yli päästiin kuitenkin onnellisesti, ja pian oltiin täydessä
kahakassa tanskalaisten kanssa. Nyt toi kuningas vasemmankin
kyljen yli ja hyökkäsi vihollisen sivuun. Wrangelille hän lähetti käskyn
taas mennä ulos jäälle ja kiertämällä karata tanskalaisten toisen
sivun kimppuun. Mutta levoton meri ei voinutkaan kauemmin olla
näyttämättä oikeata luonnettansa. Rynnäkölle tuimasti hyökkäävien
hevosten alta rikkoontui jää ja koko kaksi lippukuntaa, parisataa
miestä, katosi aaltoihin. Muu väki hämmästyi ja seisahtui kesken
rynnäkköänsä. Silloin kuningas itse vei muutamia osastonsa
lippukuntia takaisin jäälle, liki tuota turmiollista avantoa,
näyttääkseen, ettei vaara ollutkaan niin ylen suuri. Siitä saivat
Wrangelin miehet taas uutta rohkeutta; he menivät täyttä vauhtia
eteenpäin ja pääsivät ilman sen enempää vahinkoa heikon paikan yli.
Itse tappelu sitten ei kauaa kestänyt; yks, kaks oli Tanskan voima
hakattu maahan tai vangittu, ja sillä koko Fyen-saari valloitettu.
Jalkaväki ja tykistö eivät olleet ollenkaan ottaneet osaa tähän
kahakkaan; ne tulivat vasta sen loputtua rauman yli. Eipä ollut edes
kaikkea ratsuväkeäkään tarvittu; niin paljon suurempi oli Ruotsin
armeija tässä vastassa ollutta Tanskan joukkoa. Jouten jääneissä
olivat myös suomalaiset; mutta luultavasti olivat he sitten ne kaksi
ratsurykmenttiä, jotka Behrendsin johdolla lähetettiin ennakolta
Fyenin toiseen päähän Seelannista avuksi rientävää toista
tanskalaisosastoa vastaanottamaan.
Täällä Fyen-saaressa oltiin kuitenkin vasta puolitiessä, tuskin
sitäkään. Yhden yön pakkanen oli tehnyt menon Pienen Beltin yli
mahdolliseksi; mutta Iso Beltin rauma Fyenin ja Seelannin välillä oli
monta vertaa leveämpi; sen yli ei ollut mahdollista päästä yhden
ainoan yön marssilla. Mitäs jos kesken matkaa ilma lauhtuisi ja tuuli
repisi jääsillan auki — silloin Ruotsin kuninkaan ja hänen armeijansa
kävisi samoinkuin muinoin Faaraon Punaisessa meressä — silloin olisi
koko Ruotsin valta aseetonna vihollisille alttiina! Kaikki päälliköt
varoittivat näin hurjasta yrityksestä, kehoittaen odottamaan hiukan
aikaa, kunnes laivoilla päästäisiin salmen poikki. Kuningasta
itseäänkin arvelutti. Mutta samassa tuli taas tutkimusretkelle
lähetetty Dahlberg takaisin ja ilmoitti jään hyvin kannattavan.
"Ohoh", huudahti Kaarle X iloissaan, "nytpä saa Fredrik-veikkoni heti
paikalla kuulla suoraa Ruotsin puhetta!" Muiden kenraalien
vastapuheet kuitenkin saattoivat kuninkaan jälleen epäilyksiin. Hän
meni levolle. Mutta ei aikaakaan, niin hän uudestaan käski
Dahlbergin eteensä. "Voitko", kysyi hän, "oikein omantuntosi
mukaan vakuuttaa, että jää kannattaa?" — "Kuninkaallinen
majesteetti", vastasi Dahlberg, "minä voin siitä panna vaikka
päänikin pantiksi." — "Olkoon sitten menneeksi", huudahti nyt
kuningas. "Yritänpä siis Herran nimeen. Tämä tilaisuus on liian kallis,
että voisi sen päästää käsistänsä."

Yöllä helmik. 6:tta päivää vasten 1658 alkoi ratsuväki marssinsa,


Dahlberg etupäässä oppaana. Se oli kolkko, peloittava retki.
Hevosten kavioiden alla muuttui jään päällä oleva lumi veteläksi
hyhmäksi, niin että tie näytti leveältä mustalta virralta. Kyynärän
syvältä siinä kaalattiin, eikä ollut mitään varmuutta, ei ollut mitään
takeita, ettei jossain kohdassa voisi olla joku jäätymättä jäänyt sula,
pohjaton paikka edessä. Kaikki kävi kuitenkin onnellisesti. Aamun
koittaessa oltiin Langeland-saaressa, jossa levähdettiin ja syötiin
suurus. Tämäkään viimeksimainittu toimi ei ollut vaivaa vailla, sillä
pakkanen oli kaikki mukaan viedyt ruoat ja juomat muuttanut
jääkimpaleiksi, joita ensin piti hakata palasiksi ja sulattaa. Pian
lähdettiin sitten jälleen jatkamaan marssia. Kello 3 päivällä jouduttiin
Laaland-saareen, josta lähetettiin käsky Wrangelille tulla Fyeniin
jääneen jalkaväen kanssa jäljestä. Seuraavassa saaressa, Falsterissa,
levättiin kokonainen päivä, vaan helmik. 11 p. seisoi kuitenkin koko
armeija Seelannin rannalla.

Sanoma Ruotsin väen ylipääsöstä Fyeniin oli jo nostanut suuren


hämmästyksen ja säikähdyksen Kööpenhaminassa. Viipymättä oli
lähetetty muutamia Tanskan herroja Ruotsin kuninkaan luo, rauhaa
tarjoamaan. Näitä vastaan tuli, likellä Vordingborgia Seelannissa,
korkea sotaherra, joka ajoi reessä, parisataa suomalaista ratsumiestä
ympärillään. Se olikin itse Kaarle X, joka siten lyhensi heiltä matkan.
Hän tervehti iloisesti. "Oletteko tekin täällä?" kysyi hän sitten hiukan
kummastuneena Englannin lähettiläältä, joka oli seurannut
tanskalaisten kanssa, ollakseen rauhansovittelussa välittäjänä. —
"Olen", vastasi tämä, "vaan enemmän onkin minulla syytä
kummastella, että te, kuninkaallinen majesteetti, olette täällä."

Rauhansovinto ei nyt viipynyt enää kovin kauan. Tanskalaiset


syystä pelkäsivät, että myös heidän pääkaupunkinsa, joka
maanpuolelta oli varsin huonosti varustettu, voisi joutua voittajien
käsiin ja näin kenties koko heidän itsenäisyytensä tulla kukistetuksi.
Kaarle X puolestaan tahtoi kiireesti lopettaa tämän sodan,
voidakseen sitten taas kääntyä muita vihollisiansa vastaan. Tämä
Roskilden rauhanpäätös oli edullisin kaikista vielä Tanskan kanssa
solmituista. Ruotsi siinä sai Skoonen, Hallannin ja Blekingen, siis
kaikki, mitä vielä oli Tanskalla alusmaata itäpuolella Juutinraumaa. Ja
tulipa siihen sitä paitsi lisäksi myös Bornholman saari sekä
Bohusläänin ja Trondhjemin maakunnat, jotka Norjasta lohkaistiin
irti.

11. Olot Käkisalmen läänissä.

Vaikka tähän aikaan sekä Venäjä että Ruotsi eri haaroilta


ahdistivat Puolaa, ei heidän keskinäinen välinsä ollut kuitenkaan
ystävällinen. Venäläisten sydämissä kyti vanha viha ruotsalaisia
vastaan. Venäjän kansa ei voinut unohtaa, että Kustaa Aadolf oli
heiltä valloittanut Käkisalmen läänin sekä Inkerinmaan. Tämä viha
näyttäytyi joka tilaisuudessa. Ruotsalaiset ja suomalaiset, jos he
kauppa-asioilla Venäjällä käydessään tarvitsivat virkakuntien apua,
saivat aina vain pilkkaa ja haukkumasanoja vastaukseksi. Ja jos joku
heistä sattui tappamaan venäläisen, niin lausuttiin mestauspaikalla
tuomio julkisesti näillä sanoilla: nyt vääräuskolainen ja pakana, joka
kristityn miehen on tappanut, saapi ansaitun rangaistuksensa. Näihin
yksityisiin kiusantekoihin liittyi myös puolilla sanoilla ilmaantuvia
valtiollisia uhkauksia. Nykyinen tsaari Aleksei Mihailovitsh oli
arvonimeensä liittänyt sanat: "esi-isiensä perillinen" ja aluskuntiensa
luettelon loppuun lisännyt: "ynnä monta muuta idässä, pohjoisessa
sekä lännessä". Molemmat lauseet näyttivät tarkoittavan, että hän
sydämessään yhä vielä katsoi Ruotsille pois annettuja maakuntia
omiksensa. Vanhaan vihaan oli nyt tullut uuttakin lisäksi. Syynä oli
Puola, jota kumpainenkin hallitsija jo pitivät omanansa ja josta he
eivät olisi suoneet pienintäkään palasta naapurilleen. Vihdoin, kun
Kaarle X 1656 vuoden alussa oli joutunut ahdinkoon, puhkesi
venäläisten viha ilmisotaan; he luulivat nyt sopivan tilaisuuden
tulleen kostoon sekä omansa takaisinvalloittamiseen. Tämä
venäläissota uhkasi monen syyn tähden meidän maallemme suurta
vaaraa. Suomen sotaväki oli, niinkuin tiedämme, melkein kaikki
kaukana Puolassa taikka Liivinmaalla. Nekin harvat sotamiehet, jotka
olivat jääneet kotiin, kävivät paljain jaloin, melkein alastonna, sillä
yhdeksään kuukauteen he eivät olleet saaneet enempää kuin yhden
kuukauden palkan käsiinsä. Samoin olivat rajalinnatkin aivan
rappiolla. "Monella miehellä, joka maalla asuu", kirjoitti Käkisalmen
läänin ja Inkerin pääkuvernööri Kustaa Eevertinpoika Horn, "on
kartanossaan portit paremmat kuin kruunun linnoissa."

Pahempi tätä kaikkea oli kuitenkin vielä se, että alkuasukkaat


Venäjältä otetuissa voittomaissa olivat Ruotsin vallalle perin
viholliset. Syynä siihen oli etupäässä heitä painava uskonnollinen
ahdistus. Kustaa Aadolf, vaikkei hän sallinut suoraa pakotusta, oli
kuitenkin hänkin sen verran aikansa lapsi, että hän kaikilla keinoin,
usein vähemmän hyväksyttävilläkin, koetti saada uusia alamaisiansa
Lutherin uskoon kääntymään. Samaa menettelyä jatkettiin sitten
myös seuraavienkin molempien hallitusten aikana.

Siinä ei tietysti ollut mitään moitittavaa, että suomalainen Lutherin


katkismus ynnä muita meidän uskonnollisia kirjojamme painettiin
venäläisillä kirjaimilla, jotka olivat paremmin tutut karjalaisille.
Luvallistahan on vapaan opetuksen kautta vakuuttaa toiselle oppinsa
totuutta. Samoin myös ei voi muuta kuin kiittää hallituksen
kehoitusta kreikanuskoisille papeille jumalanpalveluksessa
käyttämään suomea eikä slavonin kieltä, niinkuin siihen asti oli ollut
tapana. Mutta eipä näihin keinoihin tyydyttykään. Ruvettiin
lupaamaan kreikanuskoisille papeille ja lukkareille 4, 6, jopa 8
tynnyriä viljaa vuotuisten saatavien lisäksi, tai toisin paikoin pitäjässä
olevat kirkkojen tilukset omiksensa, jos he suostuisivat oppimaan
Lutherin katkismusta ja opettamaan sitä seurakuntalaisillensa. Eikä
ollut siinäkään vielä kaikki. Sodan kautta autioiksi jääneille tiloille oli
asutettu joukoittain muusta Suomesta tuotettuja luterilaisia
talonpoikia ja näitä varten, niin pian kuin suinkin pieni seurakunta oli
karttunut, asetettu luterilainen pappi. Tämän palkkaamiseen
pakotettiin nyt kreikanuskolaisetkin ottamaan osaa ja velvoitettiin
kuulemaan ainakin yhtä saarnaa joka pyhä. Tarkoituksena oli, Kustaa
Aadolfin omilla sanoilla puhuen: "että he meikäläisiin tottuisivat, ja
venäläisen papin kuoltua suomalainen sitten voisi astua hänen
sijaansa".

Tätä puoliväkinäistä käännytystointa kreikanuskolaiset


itsepintaisesti vastustivat. Heidän poikiansa karkasi aika-ajoin rajan
yli Novgorodiin, josta he sitten täysi-oppisina pappeina palasivat
kuolevien virkaveljiensä sijaa täyttämään. Harva pappi vain taipui
vaihtamaan uskoansa hallituksen lupaamiin etuihin. Pietari Brahen
aikana mainitaan koko Käkisalmen läänissä pappeja, "tiakkoja"
(lukkareita) ynnä heidän poikiansa olleen ainoastaan viisitoista, jotka
olivat tämän palkan edestä oppineet Lutherin katkismuksen ulkoa. Ja
näiden vaikutus oli melkein mitätön, sillä kansa halveksi heitä ja
vihasi uskonheittiöinä. Silminnähtävänä todistuksena on se vaino,
joka juuri tähän aikaan kohtasi yhtä näistä papeista, Kurkijoen
kirkkoherraa Jaakkima Terentiovia, jos kohta oikea vihan syy
peitettiin noituuden kanteella. Useimmat kreikanuskoiset papit
pysyivät lujina ja vahvistivat myös sanankuulijoittensa
vastahakoisuutta. Suurta apua ei myöskään ollut maahan
lähetetyistä luterilaisista papeista. Tiedämmehän me, minkälainen
Suomen papiston sivistyksen ja siveyden tila oli ennen yliopiston
perustamista, ja luultavaa on, että tänne lisäksi saatiin huonoimmat
ainekset. Eipä kumma siis, jos näiden uuden uskon apostolien
mainitaan vain istuneen kapakoissa, oluthaarikka edessään, piippu
kädessä, siellä harjoitellen käännytystyötänsä vieraan uskonnon
haukkumisella, josta tietysti taas tuli kreikkalaisilta haukkumasanoja
takaisin. Seurauksena kaikesta tästä oli, että käännytystoimi ei
paljon ollenkaan menestynyt. Päinvastoin tapahtui joskus, että joku
luterilainen tulokas, keskellä kreikanuskolaisia asuen, itsekin taipui
naapuriensa oppiin, jotka uskonmuutokset kuitenkin hallitus heti
kielsi kuoleman uhalla.

Asiain näin ollen ajatteli Ruotsin hallitus yhteen aikaan välikeinoa,


saadakseen ainakin kreikanuskoisen kirkon Suomessa ja Inkerissä
erilleen Venäjän yhteydestä, josta aina vuoti vihollisuutta uutta
valtaa vastaan. Luvattiin näet matkarahaa papille, joka lähetettäisiin
Konstantinopolin patriarkan vihittäväksi ja joka sitten olisi tullut
Ruotsin kreikanuskoisten alamaisten piispaksi. Sama ehdotus
uudistettiin myöhemmin sillä muutoksella, että Karjalan piispa saisi
käydä vihittämässä itseään Kievissä. Mutta kreikanuskoiset
karjalaiset eivät siitä tarjoumuksesta huolineet; he tahtoivat
edelleenkin saada pappinsa Venäjällä vihityiksi. Hallitus puolestaan ei
myöskään ollut tuumaansa kovin harras; sillä aina vielä toivoi se
saavansa vierasuskolaiset tavalla tai toisella valtion uskoon
käännytetyiksi. Samassa Kristiinan kirjeessä vuodelta 1650, jossa
annettiin lupa piispan vihkimiseen Kievissä, oli näet kuitenkin lisätty,
ettei hän takaisin tultuansa saisi asettaa pappeja muuta kuin "juuri
tarpeen mukaan ja missä niitä välttämättömästi tarvitaan". Ja Kaarle
X antoi Kaprion läänin asukkaille, jotka pyysivät saada muutamia
omauskoisiansa pappeja (luultavasti kuolleitten sijaan), jouluk. 15 p.
1654 jyrkästi kieltävän vastauksen. "Kuninkaallista Majesteettia", niin
kuuluivat sanat, "arveluttaa tähän nykyiseen aikaan suostua siihen,
mutta hän näkisi paljoa mieluummin, että he kääntyisivät
luterilaiseen, oikeaan uskontoon ja jumalanpalvelukseen."
Olisi voinut luulla, että kenties Ruotsin vapaampi hallitusmuoto ja
kansan etua valvova laki olisivat kuitenkin voineet suostuttaa
Laatokan ja Nevan karjalaiset uuteen valtaan. Mutta ensiksikin oli
silloin juuri se aikakausi, jolloin uskonto oli voimallisin yhdistäjä tai
eroittaja ihmisten välillä, jolloin samanuskoiset, vaikka eri
kansallisuuksiin kuuluvat, pitivät toisiansa veljinään, ja eriuskoiset,
joskin he olivat yhtä kansaa, vihasivat toisiansa verisesti. Ja toiseksi
eivät Ruotsin hallitusmuodon ja lain edut olleet tulleet Käkisalmen
läänin ja Inkerin asukkaille osaksi. Niinkuin jo tiedämme, ei heidän
sallittu valtiopäiville lähettää edustajia. Ruotsin laista ei myöskään
ollut suurta suojaa. Molemmat maakunnat olivat pitäjittäin annetut
lahjoitusmaiksi korkeille Ruotsin herroille, joita kruunun kaikki
virkamiehet nöyrästi kumartelivat. Linnojen ja sotaväen huonoon
tilaan sanoi Horn pääsyynä olleen sen, että "maaherra enemmän
valvoo suurten herrojen suosiota kuin kruunun etua". Jos niin oli
laita, missä kruunun hyödystä oli puhe, mitä turvaa saattoi rahvas
toivoa kuninkaan käskynhaltijoilta! Se olikin aivan ilman suojaa
jätetty alttiiksi aatelisherrojen, voutien ja kruunun alempien
virkamiesten täyttymättömälle ahneudelle. Minkälainen
talonpoikaraukkain tila oli Käkisalmen läänissä, sen olemme jo
nähneet luvussa Samuli Cröellistä.

Eipä ole siis ollenkaan kummeksittavaa, että niin Inkerin kuin


Käkisalmen läänin kreikanuskoinen kansa tuskin hillityllä
vihamiellisyydellä katseli uusia hallitsijoitansa ja hartaalla ikävällä
toivoi venäläisiä avukseen.

12. Venäläisten hyökkäys maahan.


Suomen suureksi onneksi venäläisten päähyökkäys tarkoitti
Liivinmaata, sillä tsaari toivoi Riiasta saavansa hyvän kauppasataman
Itämeren rannalla. Hän toi tätä kaupunkia vastaan armeijan, jonka
luku arvattiin 90,000:ksi mieheksi. Mutta riittipä tuosta avarasta
valtakunnasta myös muuallekin väkeä. Kaksi sotajoukkoa lähetettiin
Inkeriin ja Käkisalmen lääniin, näitä kaivatuita maakuntia takaisin
valloittamaan.

Kesäkuun 4 p. 1656 ilmaantui Nevajokeen, Pähkinälinnan edustalle


130 lotjaa, täynnä venäläisiä, jotka laittoivat piiritysleirejä
kumpaisellekin rannalle. Vähäinen partioparvi souti jokea alas
vieläkin edemmäksi ja saapui seuraavana iltana Nevanlinnalle. Kello
9, juuri kun asukkaat, mitään pahaa aavistamatta, olivat menneet
levolle, karkasi vihollinen äkkiä päälle hirmuisella huudolla. Koko
kaupunki poltettiin tuhaksi, irtain tavara ryöstettiin, asukkaat
murhattiin suurimmaksi osaksi. Saaliin seassa oli noin 70,000
tynnyriä viljaa, jotka olivat Inkerin aateliskartanoista sinne tuodut
ulkomaille laivattavaksi; myös oli kaupungissa suuria suolavaroja.
Näistä jakoivat venäläiset seudun kreikanuskoisille talonpojille niin
paljon kuin nämä tahtoivat, ja tähteet poltettiin yhdessä aittojen
kanssa. Maaseudullakin sytytettiin kaikki aateliskartanot sekä
luterilaiskirkot palamaan; mutta talonpoikaistalot sitä vastoin
enimmäkseen säästettiin, sillä niiden asukkaathan olivat melkein
kaikki polttajien omia uskolaisia ja liittolaisia. Tämä summaton
vahinko olisi kuitenkin luultavasti suurimmaksi osaksi saatu estetyksi,
jos vain vähänkin olisi oltu varuillaan, sillä tuhoa tekevän partion
miesluku oli sangen vähäinen. Se nähdään pienestä tapauksesta
tässä tilaisuudessa. Eräs Nevanlinnan porvareista, nimeltänsä Matti,
joka oli muita rohkeampi, ei antanutkaan teurastaa itseänsä niinkuin
turvatonta karitsaa, vaan sieppasi melun kuultuansa miekkansa
seinältä, hyppäsi hevosessa selkään ja raivasi itselleen täten,
paitasillaan ratsastaen ja oikealle ja vasemmalle huitoen, tien
vihollisten läpi.

Toinen partioparvi, noin 300 miestä, oli taas Pähkinälinnan


edustalta mennyt Taipaleen kauppalaan Suvannonjärven suuhun
Käkisalmen lääniin. Sieltä he levittivät lähipitäjiin tsaarinsa
julistuksen: niiden, jotka vapaaehtoisesti antautuisivat hänen
valtansa alle, piti saada säilyttää henkensä ja tavaransa
vahingoittamatta; mutta vastahakoiset piti armotta surmattaman.
Laumoittain virtasivat nyt seudun kreikanuskoiset talonpojat leiriin
uskollisuusvalaa vannomaan ja suojeluskirjoja lunastamaan; toipa
suuri osa heistä aseensakin mukanansa ja jäi uskolaistensa luokse
näiden voiman lisäksi. Luterilaisista sangen moni, saadakseen
turvaa, antoi kastaa itsensä kreikan uskoon. Ne, joiden omatunto
siihen oli liian herkkä, pakenivat korpiin ja jättivät talonsa autioiksi,
vihollisen poltettavaksi.

Sillä välin oli toinen venäläinen osasto, enimmäksi osaksi


ratsuväkeä, samonnut maahan Aunuksen puolelta Laatokan pohjois-
rantaa myöten. Sielläkin talonpojat joka paikassa tervehtivät tulijoita
vapauttajinaan, toivat runsaasti ruokaa ja neuvoivat avuliaasti tietä.
Ruotsalaisten aatelisherrojen voudit, samoinkuin myös luterilaiset
papit ja kruunun virkamiehet, tapettiin tai kuljetettiin pois
vankeuteen Venäjälle. Eräs partiojoukko tästä osastosta ulkoni
Savoonkin asti. Savonlinnan kaupunki ja Kerimäen kirkko poltettiin,
linna piiritettiin. Koko seutu oli hävityksen vallassa. Ihmiset
surmattiin usein hirmuisilla kidutuksilla, esiin. elävältä nylkemällä.
Talot poltettiin, samoin kuin kaikki irtain tavara, jota ei voitu
poiskuljettaa, yksinpä viljakin, joka vielä kasvoi pelloilla. Karja
tapettiin, nyljettiin ja jätettiin sitten suotta märkänemään. — Yöllä
heinäk. 2:n ja 3:n päivän välillä tuli viimein vihollislaivasto
Käkisalmen rantaan ja sulki myös läänin pääkaupungin saarroksiin.

Peloittava vaara uhkasi täten sekä Itämeren maakuntia että myös


Suomenmaata. Ja pahinta oli se, ettei siihen vaaraan ollut paljon
mitään apuakaan muualta toivossa ensi hetkellä. Kaarle X paraikaa
varusti ja sitten alotti yhdessä liitossa Brandenburgin vaaliruhtinaan
kanssa tuon retkensä, jolla hän luuli saavansa puolalaisten voiman
lopullisesti kukistetuksi. "En voi täällä umpimähkään jättää kaikkea
kesken sentähden, että muka moskovalainen on meidän maahamme
karannut!" kirjoitti hän äreästi De la Gardielle, joka Liivinmaan
puolustukseksi pyysi lisäväkeä. Samoin myös Tukholmassa, kun asia
tuli puheeksi valtaneuvoskunnassa, päätettiin yksimielisesti: että uusi
tärkeä voittomaa, Preussi, etupäässä oli suojeltava, vaikkapa sen
kautta Suomi ja Liivinmaa joksikuksi aikaa jäisivätkin vihollisen
valtaan. Tulisihan sitten taas aika kääntyä venäläistä vastaan.
Lähetettiin siis vain suomalaisille kehoitus omin voimin torjua
päällekarkaus takaisin, jonka lisäksi Pietari Brahe, vanha uskollinen
ystävämme, tarjoutui menemään päälliköksi. Hänen lähdöstänsä ei
kuitenkaan tullut mitään, koska kuningas oli jo sen viran uskonut
toiselle miehelle. Ensi närkästyksensä tyynnyttyä oli näet Kaarle X
sittenkin pitänyt sen verran huolta melkein kokonaan turvattomasta
Suomesta, että oli käskenyt sinne sotamarski Leijonhufvudin Karjalan
ratsurykmentin kanssa Liivinmaalla. Samoin hän myöhemmin lähetti
Preussista pienen armeijan piiritetyn Riian avuksi. Kumpikin apu tuli
vain jokseenkin myöhään, silloin kun pahin vaara jo oli ohitse; sillä
Karjalan ratsumiehiäkin pidätettiin vielä vasten kuninkaan käskyä
Liivinmaalla pari kuukautta.

Omin voimin tuli siis sekä Liivin- että Suomenmaan nyt pitää
puoliansa, ja tämä vaikea tehtävä tulikin verrattomalla
alttiiksiantaumuksella, urhoudella sekä menestyksellä suoritetuksi.
Riian vähälukuinen linnaväki (porvarien kanssa ainoastaan 5,000
miestä, joissa 16 komppaniaa suomalaisia) teki miehuullista
vastarintaa. Turhaan maleksivat venäläiset seitsemän viikkoa
kaupungin ympärillä, ahdistaen sitä piiritystöillään niin paljon kuin
heidän puuttuva taitonsa näissä asioissa myöten antoi.
Loppupäätöksenä oli kuitenkin se, että heidän, menetettyänsä
14,000 miestä, täytyi tyhjin käsin poistua.

Suomessa olivat sillä aikaa maaherrat nostaneet talonpojat


aseisiin, ja tätä käskyä oli joka paikassa toteltu suurella hartaudella.
Mies joka talosta oli lähtenyt sotaan; niin innokkaita oltiin, kun omaa
maata oli puolustettava. Jaloimman uhraavaisuuden ja urhouden
esimerkin antoi Viipurin kaupunki. Sielläkin olivat vallit rappiolla:
tykkejä ei ollut muuta kuin 14 pienenlaista; sotamiehiä puuttui
melkein kokonaan; eipä ollut edes päällikköäkään, sillä maaherra
Stålarm oli juuri äsken kuollut. Sittenkään ei kukaan nostanut
puheeksikaan antautumista, jos vihollinen sinne asti tulisi.
Kaupunkilaiset pyysivät komentajakseen eversti Burmeisterin, joka
asui Viipurissa. Kanuunien lukua lisättiin vielä kymmenellä, jotka
otettiin satamassa seisovasta suuresta kauppalaivasta. Valleja
rintavarustuksineen ruvettiin korjaamaan kätten mahtain. Aseisiin
tarttui joka mies, ken vaan suinkin kykeni. Yksinpä kymnaasin ja
koulun nuorisostakin tehtiin kaksi komppaniaa. Tätä sotaista menoa
kesti koko kuukauden. Silloin nähtiin, ettei vihollinen uskaltanutkaan
niin kauas maahan tunkeutua. Nyt vapautettiin siis porvarit
vaivalloisesta korjaustyöstänsä ja vahdinpidostansa. Koulunuorisokin
antoi pois kiväärinsä ja kutsuttiin sitten linnaan, missä heidän
vaivannäkönsä palkittiin ulkomaan oluella sekä muutenkin komeilla
pidoilla. Sotaisessa innossaan otti silloin kolmetoista heistä pestin
varsinaiseen sotaväkeen. Opettajat olivat tosin kovasti pahoilla
mielin, että heidän "alamaisensa" näin hylkäsivät kirjansa, vaan
kukas tällä hetkellä kuunteli rauhan miesten valituksia!

Burmeister läksi nyt 150:n ratsumiehen, 200:n rakuunan sekä


800:n talonpojan kanssa Käkisalmea auttamaan. Eräälle salmelle,
luultavasti Kiviniemen kohdalle tultuansa havaitsi hän kuitenkin, että
venäläiset olivat polttamalla sillan katkaisseet hänen tiensä. Hän
vetäytyi sentähden Raudulle, asettuen leiriin likelle kirkkoa. Tässä
karkasi 7-800 venäläistä äkkiarvaamatta hänen päällensä yöllä
heinäk. 14:ttä päivää vasten. Heidät torjuttiin takaisin, jonka jälkeen
suomalaiset myös vuorostansa läksivät rynnäkölle ulos leiristä.
Venäläiset eivät ensin siitä olleet milläänkään, vaan seisoivat aukealla
tantereella täydessä sotarinnassa, valmiina heitä vastaanottamaan.
Näin alkoi Raudun kahakka, jossa vihollinen neljä tuntia teki lujaa
vastarintaa, kunnes hänen viimein täytyi paeta metsien turviin.
Kentälle oli häneltä jäänyt 200 kuollutta. Suomen puolelta ei kuulu
kaatuneen enempää kuin 40 miestä, haavoitetutkin siihen luettuina.
Kuolleista mainitaan Bartholdus Simonis (Pärttyli Simonpoika), eräs
noista pestin ottaneista kymnaasilaisista, joka oli ollut lipunkantajana
tappelussa. Myös talonpoikainen nostoväki oli taistellut niin uljaasti
ja niin täydellä toimella, että heitä upseerit suuresti kehuivat.

13. Käkisalmen piiritys.

Käkisalmen rantaan oli, niinkuin jo ennen on kerrottu, saapunut


venäläinen lotjalaivasto yöllä heinäk. 3:tta päivää vasten.
Seuraavana päivänä tuli torvensoittaja kehoittaen antautumaan. Jos
siihen suostuttaisiin, saisi sotaväki ynnä ne kaupungin asukkaat,
jotka niin halusivat, estämättä lähteä matkaansa; niille taas, jotka
tsaarille vannoisivat uskollisuusvalan, luvattiin suuria etuja. Mutta
uljas komentaja Olavi Pentinpoika vastasi jyrkällä kiellolla. Hän sanoi
saaneensa kuninkaaltaan käskyn taistella ruudilla ja lyijyllä, niin
kauan kuin yksikin mies vielä oli pystyssä. Mainittuna päivänä
iltapuolella alkoi siis piiritys. Venäläiset jakoivat voimansa kahteen
leiriin, joista toinen oli kaupungin pohjoisella, toinen eteläisellä
puolella. He rakensivat matalia rintavarustuksia, joiden takaa
paukuttelivat pyssyillänsä; vaan ei siitä tullut suurtakaan vahinkoa.
Melkein yhtä mitätön oli pienen tykin vaikutus, jolla he sitten
rupesivat ammuskelemaan. Yöllä heinäk. 10:ttä päivää vasten he
ryhtyivät varustuksen rakentamiseen Kalliosaarelle, jonka korkealle
kukkulalle näkyi kaupungin ja linnan sisusta. Mutta kohta seuraavana
päivänä jo pujahti pieni parvi sotureita, porvareita sekä
aatelisherrojen palvelijoita salaa ulos linnan takaportista. He soutivat
venäläisten huomaamatta saarelle, karkasivat äkkiä päälle ja
tappoivat siellä olevat viholliset melkein viimeiseen mieheen asti.
Muutamia vankeja vain otettiin, joista useimmat tunnettiin seudun
kreikanuskoisiksi talonpojiksi. Venäläiset rakensivat nyt muutamia
toisia pattereita lisäksi ja lähettivät linnaan taas uuden
antautumiskehoituksen; mutta heille vastattiin, että se, joka
kolmannen kerran tuo semmoisen sanan, saapi lyijyluodin vaivansa
palkaksi.

Tuosta yrittivät piirittäjät lähteä väkirynnäkölle. Elok. 15 p.


aamupuolella ruvettiin heidän molemmista leireistään kiivaasti
lennättämään tulisia kuulla. Myös työnnettiin palavia
tervatynnyrilauttoja virran viedä kaupungin puista hakulia vastaan.
Samassa lähenivät ryntäysjoukot, aikoen käyttää hyväkseen häiriötä,
joka tulipaloista oli syntyvä. Mutta linnalaisten valppaasta toimesta
saatiin valkea aina heti ensi-idussaan sammuksiin. Senvuoksi
vetäytyivät ryntäysjoukot molemminpuolisen ankaran pyssytulen
jälkeen takaisin varustustensa taakse. Kun sitten uudestaan lähetetty
rauhanhieroja lupauksenmukaisesti oli saanut luodin päähänsä,
luopuivat venäläiset kokonaan kaikista väkinäisistä valloitustuumista.
He päättivät tästä lähtien vain maata jouten vallituksissaan,
odottaen, kunnes nälkä olisi pehmentänyt linnalaisten lujuuden.

Sillä välin oli vihdoinkin heinäkuun lopulla Leijonhufvud saapunut


Suomeen Karjalan ratsumiesten kanssa. Nämät olivat jo Liivinmaalla
kovasti nurisseet siitä, että heidän täytyi palvella "vieraalla maalla",
sillaikaa kuin heidän oma maansa oli alttiina armottoman vihollisen
hävityksille. Helppo on siis arvata, millä innolla he nyt venäläistä
vastaan läksivät. Uusi ylipäällikkö oli saanut kuninkaalta luvan
käyttää kaikki Suomesta kruunulle tulevat verot sen puolustukseksi.
Hän nyt kaikkein ensiksi järjesti ja varusti käsillä olevat voimat ja
kiirehdytti vielä uusien lisäjoukkojen kuntoonpanemista. Sitten
marssi hän 1,600:n miehen kanssa Käkisalmen avuksi. Elok. 30 p.
nähtiin, piiritettyjen suureksi riemuksi, sinikeltaisten lippujen
lähenevän eteläiseltä puolelta. Rynnäkkö piirittäjien vallitusta
vastaan ei onnistunut; mutta kun Leijonhufvud sitten pani tulikitansa
ammumaan, pelästyivät venäläiset ja jättivät yöllä senpuolisen
leirinsä autioksi. Nyt vietiin Käkisalmeen melkoinen joukko apuväkeä
sekä runsaat varat kaikellaisia tarpeita, jonka jälkeen Leijonhufvud
jälleen läksi matkaansa. Turvattuaan linnan, hän ei huolinut turhaan
kuluttaa vähää sotavoimaansa rynnäkköihin venäläisten muita
vallituksia vastaan. Vielä kolme viikkoa jatkoivat sitten piirittäjät
työtänsä, vaikkei heillä voinut enää olla kovin suurta menestyksen
toivoa. Vihdoin viimein lopettivat piiritetyt ahdistuksensa sukkelalla
kepposella. Syysk. 25 p. marssitti Olavi Pentinpoika pientä
linnaväkeänsä kovalla rumpujen pärrytyksellä edestakaisin linnassa.
Marssiessaan kantoivat sotamiehet suurta lippujoukkoa. Tätä menoa
kesti pari tuntia. Venäläiset, jotka kuulivat melun ja näkivät lippujen
paljouden, eivät voineet luulla muuta, kuin että apuarmeija, jonka
lähenemisestä taas kävi huhu, tavalla tai toisella heidän
huomaamattansa oli päässyt linnaan. He läksivät siis seuraavana
yönä kokonaan tiehensä. Mutta ennen lähtöänsä he vielä elävältä
polttivat kaikki suomalaiset sotamiehet, kuusi luvultansa, jotka
piirityksen aikana olivat heidän käsiinsä joutuneet. Samoin oli
Leijonhufvudkin kaikilta hänelle tuoduilta vangeilta hakkauttanut
pään poikki. Niin julmat olivat sotatavat siihen aikaan näillä mailla.

Käkisalmesta oli Leijonhufvud sillä välin mennyt Pähkinälinnan


avuksi. Siihen asti ei ollut Inkerin kenraalikuvernööri Kustaa
Eevertinpoika Horn voinut saada paljon mitään aikaan muutamilla
sadoilla miehillänsä. Mutta kun nyt molemmat suomalaiset
sotavoimat yhdistyivät, karttuen täten 2,500:ksi mieheksi, masentui
kerrassaan venäläisten rohkeus, vaikka heidän lukunsa oli hyvinkin
kolme vertaa suurempi. Pähkinälinnaa olivat piirittäjät lokakuussa
kehoittaneet antautumiseen, mutta saaneet vastaukseksi tuon
vanhan sanaleikin: "Omenoita ja päärynöitä voitte saada, vaan ette
tämmöistä pähkinää!" Jonkun aikaa myöhemmin kuoli Frans Grave,
linnan uljas komentaja. Kuolinvuoteellaan hän kuitenkin oli
vannottanut alapäälliköitään, etteivät suinkaan antautumisella
häpäisisi Ruotsin soturien loistavaa mainetta. Keskipaikoilla
marraskuuta nyt venäläiset pakenivat Leijonhufvudin pelosta.
Pähkinälinnan 120:sta urhoollisesta puolustajasta oli silloin enää vain
72 miestä elossa.

Piirityksissä myös ollutta Savonlinnaa ei ollutkaan Leijonhufvudin


tarvinnut mennä auttamaan. Se oli jo aikaa sitten itse vapautunut
ahdistajistaan. Linnaväki näet oli yhtenä päivänä
äkkiarvaamattomalla hyökkäyksellä valloittanut venäläisten leirin,
tappanut heiltä 100 miestä, ajanut muut hajalleen ja päästänyt
siteistä 500 omaa kansalaista, joita aiottiin viedä Venäjälle orjuuteen.

Samoin olivat Brahen vapaaherrakunnan alustalaiset hänen


asettamansa pienen sotajoukon avulla itse torjuneet pois vihollisen,
tappaneet häneltä 1,100 miestä ja valloittaneet kaksi lippua, jotka he
sitten ylpeydellä lähettivät kuninkaalle.

Leijonhufvud aikoi nyt, kun oma maa oli puhdistettu, siirtää sodan
rajan yli vihollisen alueelle. Tätä hanketta ei ollut hänen kuitenkaan
sallittu johtaa, sillä hän kuoli Raudulla kuumetautiin. Ylimmän
komennon otti käteensä nyt kenraalimajuuri Kruse. Hän vei melkein
koko sotavoimansa uuden vuoden (1657) alkupäivinä Aunukseen.
Heidän täytyi tosin tyhjin toimin kääntyä pois Aunuksenkaupungin
edustalta, jonka venäläiset olivat varustaneet liian vahvaksi. Mutta
koko maaseutu hävitettiin laajalta. Kaikki tavatut ihmiset tapettiin
ilman eroitusta, ja karjakin, jota rehun puutteen tähden ei voitu
poiskuljettaa, poltettiin. Tulen omaksi joutui niinikään 11 kirkkoa,
lukemattomia kyliä, sekä suuri joukko pitkin Laatokan rantaa
kiinnijäätyneitä aluksia. "Kaiken tämän johdosta", kehui Kruse, "ovat
nuo raakalaiset joutuneet suuren pelon valtaan." Mutta
raakalaisnimenpä meidän omatkin soturimme täydesti ansaitsivat,
sillä he olivat sodankäynnissään melkein samallaisia petoja kuin
heidän itäiset naapurinsa. Siinä suhteessa he vain olivat noita
paremmat, etteivät he toki tappaessaan näytä harjoittaneen
luonnotonta, kiduttavaa julmuutta.

14. Kustaa Eevertinpoika Horn Suomen kenraalikuvernöörinä.


Leijonhufvudin kuoltua siirsi kuningas Kustaa Eevertinpoika Hornin
Suomen kenraalikuvernööriksi. Tämä päätti voimallisesti panna
toimeen edeltäjänsä keskenjääneen tuuman, siirtää sodan
venäläisten omaan maahan. Ensiksi hän lähetti 300:n miehisen
ratsumiesparven hävittämään suurta Tulomajärven kylää, vähän
matkaa Salmin rajalta. Täten hän tahtoi ennen lähtöänsä turvata
Käkisalmen lääniä, sillä mainitussa kylässä oli venäläisillä aina ollut
päämajansa hyökätessään Suomen Karjalaan. Partiokunta sovitti
marssinsa niin, että se joutui perille juuri pääsiäispyhäksi, jolloin
kreikanuskolaisten tiedettiin korvaavan pitkät paastoamisensa
ylenmääräisellä syömisellä ja juomisella. Juopuneet, vaaraa
aavistamattomat karjalaiset surmattiinkin enimmäksi osaksi, ja kaikki
kylän 100 taloa poltettiin.

Suurelle retkellensä eteläänpäin aikoi Horn lähteä niin pian kuin


keväällä ruohoa ilmestyi, sillä nyt talvella oli suuremman sotavoiman
ihan mahdoton kulkea tuon perinjuurin ryöstetyn ja hävitetyn Inkerin
lävitse. Väliajalla hän piti joka läänissä maakuntapäiviä, joilla hän sai
tarpeelliset varat myönnetyiksi.[5] Mutta kesän tultua täytyi hänen
kuitenkin luopua tuosta kauan varustetusta hankkeestansa. Kuningas
näet käski suuren osan Suomessa olevia sotajoukkoja Liivinmaalle.
Eikä aikaakaan, niin tuli jo toinenkin käsky, että Hornin piti kaikkien
tähteittenkin kanssa marssia pois entisten jäljessä. Hän totteli ja oli
jo ehtinyt Nevajoen toiselle puolelle, kun paha hätäsanoma hänet
saavutti. Useampia tuhansia vihollisia oli hyökännyt maahan
Laatokan pohjoisrantaa myöten ja ruvennut uudestaan Käkisalmea
piirittämään. Senvuoksi Horn ei nyt lähettänyt Liiviin enempää kuin
600 miestä; itse hän kiiruusti vei päävoimansa jälleen
Suomenmaahan. Hämmästyneet venäläiset, jotka luulivat hänen
olevan kaukomailla, pakenivat suurella vauhdilla takaisin rajan
taakse. Mutta aika olikin tulla apuun. "Jos olisin", kirjoitti Horn, "vain
viikon päivät kauemmin viipynyt, niin olisi koko se maanääri ollut
vihollisen vallassa, vieläpä Viipurikin, jossa porvarien ja talonpoikien
apuna ei olisi ollut 70 sotamiestä."

Tämä hänen synnyinmaatansa uhkaava vaara vaikutti sen, ettei


Horn tästä lähtien halunnut antaa Suomen vähistä puolustusvoimista
sen enempää pois. Kuningas pian taas vaati 800 jalkamiestä Riikaan,
jonka linnaväestön enin osa oli kuollut ruttoon. Mutta Horn vain
vastasi sen olevan mahdotonta, koska Suomi muuten jäisi turvaa
vaille. Kaarle X uudisti lokakuussa vielä ankarammin käskynsä.
"Tätä", kirjoitti hän, "teidän tulee viipymättä totella, antamatta
minkään muun syyn tulla esteeksi." Ja loppuun hän vielä, nähtävästi
siinä pelossa, että tuo itsepäinen suomalainen nytkin jättäisi käskyn
täyttämättä, pani seuraavan lisäyksen: "800 miestä, tai ainakin niin
monta kuin voitte saada kokoon." Vaan eipä Horn sen paremmin
suostunut antamaan pois yhtään ainoata miestänsä. Hän selitti ruton
Suomessakin pahasti vähentäneen jalkaväkeä. Nähtävästi oli
kuninkaalle luuloteltu Suomessa olevan väkeä yltäkyllin, mikä olisikin
ollut sangen suotava asia. Mutta todellisuudessa olisi Hornin ollut
pakko, jos tuota käskyä piti totella, jättää Viipuri sekä koko se
maanääri alttiiksi. "Sillä", jatkoi hän, "eihän tässä metsäisessä
maassa voi tehdä viittä vertaa voimallisemmalle viholliselle
vastarintaa näin vähillä ratsumiehillä. Ja koska en tiedä, enkä voi
ajatellakaan, teidän aikomuksenne, kuninkaallinen majesteetti,
olevan luopua Suomesta sekä niin tärkeästä linnasta, kuin Viipurista,
koetan niitä viimeiseen asti puolustaa." Kaarlen ikuiseksi kunniaksi
on mainittava, ettei hän tästä suorasta vastauksesta suuttunut, vaan
edelleenkin osoitti Hornille suurta suosiota.

Väkeäkin luovuttamatta kävi muuten Hornin ja Suomen tila tähän


aikaan yhä arveluttavammaksi. Rutto oli keväällä ja kesällä 1657
raivonnut aivan hirmuisesti Liivinmaalla sekä Inkerissä. Loppukesällä
se jo levisi meidänkin maahamme. Viipurin kaupungissa kuoli siihen
elokuusta 1657 maaliskuuhun 1658 yksistään korkeammista
säädyistä 50 henkeä, alhaista kansaa lukuunottamattakaan. Myöskin
sotajoukot sen kautta peloittavasti vähenivät. Vuoden 1657 lopussa
ei ollut jalkaväkeä kaikissa Suomenmaan linnoissa yhteensä enää
enempää kuin 601 miestä jalkeilla. Noin 200 oli kuollut ja 302
paraikaa makasi sairasvuoteella. Ratsuväki, vaikka tietysti sekin oli
huvennut, oli verraten lukuisampi. Vähäisen sotajoukkonsa kanssa
majaili Horn koko syksyn 1657 Mägrässä (luultavasti Raudulla), joka
päivä odotellen ylivoimaisen vihollisen päällekarkausta. Hyväksi
onneksi peloitti kuitenkin sanoma rutosta venäläisiä maahan
tulemasta.

Roskilden rauhansovinnon jälkeen toivoi koko Suomi itse


kuninkaan voittoisan armeijansa kanssa tulevan venäläisiä
kukistamaan. Horn myös lausui sen toivomuksen ilmi eräässä
kirjeessä. Yhteen aikaan kuuluukin Kaarle X sitä tuumineen. Hän olisi
silloin luultavasti yrittänyt laajentaa valtakuntaansa itäänpäin niillä
suomalaisilla alueilla, jotka Stolbovan sovinnossa olivat jääneet
venäläisten vallan alle. Heti venäläissodan alussa tehty ehdotus
ainakin mainitsee rauhanehtoina muun muassa Turjan Lapin sekä
Karjalan itäpuoliskon Syväriin ja Äänisjärveen saakka. Tarkemmin
aprikoituaan luopui kuitenkin Kaarle näistä tuumista. Sotaa tuossa
rämeisessä, metsäisessä maassa olisi sangen vaikea käydä, ja
saksalaiset palkkasoturit suoraan ilmoittivat, etteivät he sinne lähtisi.
Ruotsalaisten ihmeellinen menestys Tanskassa teki venäläiset
puolestansa taipuvaisemmiksi. Mutta sittenkin kului vielä
jommoinenkin aika, ennenkuin sovinto saatiin toimeen. Suomessa
ponnisteltiin siis vielä viimeisiä voimia armeijan kuntoonsaamiseksi;
sillä sen kautta toivottiin voivan kiirehdyttää rauhan tekoa. Hornin
kehoituksesta suostuivat Suomen säädyt nyt jo v. 1658 antamaan
sekä 1659:n että 1660:n vuoden rekryytit. Vuoden oma varsinainen
sotaväenotto oli näet jo edellisenä vuonna tullut ennakolta
toimitetuksi. Näitä uusia joukkoja ei kuitenkaan tarvittu enää meidän
maamme omaksi suojelukseksi; ne vietiin taas Inkeriin ja
Liivinmaalle, missä sota jatkui vielä melkein vuoden loppuun saakka.
Vihdoin lopetti Vallisaaressa jouluk. 20 p. tehty välirauha, joka kolme
vuotta myöhemmin muutettiin vakinaiseksi rauhansovinnoksi
Kardisissa, kaiken pelon tältä puolelta.

Rajat jäivät entiselleen; mutta sittenkin sai tämä sota Suomessa


aikaan erittäin tärkeän muutoksen, joka vasta oikein vahvisti
Stolbovan rauhansovinnon voitot. Sodan aikana ja rauhan jälkeen
näet enin osa kreikanuskoisista karjalaisista, jotka pelkäsivät
rangaistusta eivätkä tahtoneet uskonnollista sortoa kauemmin kärsiä,
muutti pois Venäjälle. Jo v. 1656 läksi yksistään Käkisalmen läänistä
4,107 perhekuntaa, joiden jälkeisiä epäilemättä ovat nuot vieläkin
Novgorodin, Tverin ja Vladimirin läänissä asuvat karjalaiset.[6]
Ainoastaan Salmin kihlakuntaan jäi kreikanuskolaisia kosommalta.
Poismuuttaneitten sijaan tuli lännemmistä lääneistä luterilaisia
suomalaisia, joiden kautta kuitenkin Käkisalmen lääni kasvoi
eroamattomasti kiinni muuhun Suomeen.

15. Kustaa Eevertinpoika Horn.

Edellisessä luvussa mainittu Suomen ylimäinen hoitaja tänä


vaarallisena aikana, Kustaa Horn, oli kuuluisan sotapäällikkömme
Eevert Hornin poika. Hän syntyi Helatorstaina 1614 Autisten l.
Auhtisten kartanossa Askaisten kappelissa, joka oli hänen äitinsä
Margareeta Fincken perintöä. Isäänsä ei hän saanut paljon
nähdäkään, sillä tämä kaatui jo seuraavana vuonna Augdovan
edustalla. Pojan kasvatus jäi siis yksistään äidin haltuun. Miten se tuli
hoidetuksi, siitä ei ole meille säilynyt varsinaista tietoa; mutta mitä
vieraihin kieliin tulee, oppi hän kumminkin saksaa jokseenkin hyvin,
niinkuin näkyy muutamista hänen kirjeistänsä kuninkaalle sekä
sedällensä, vanhalle sotamarski Kustaa Hornille.

Ensimäisen virkansa, kamariherran toimen Kristiinan hovissa, hän


sai v. 1634. Seuraavana vuonna hän jätti kuitenkin tämän rauhallisen
toimen ja rupesi aikansa nuorten aatelisherrojen tapaan soturiksi,
saaden kapteenina yhden lippukunnan Uplannin jalkarykmentissä
johtonsa alle. Epätietoista on, läksikö hän silloin heti sotatantereelle;
mutta v. 1637 ainakin jo tapaamme hänet Saksassa. Hän komensi
silloin majurina Uplannin sekä Itägöötin rykmenttien yhdistettyjä
osia. V. 1638 hän korotettiin everstiluutnantiksi Leslien pestattuun
rykmenttiin; pian sen jälkeen uskottiin hänelle everstin arvonimellä
Wittenbergin rykmentin itsenäinen johto. V. 1647 hän korotettiin
hevosväen kenraalimajuriksi, v. 1652 kenraaliluutnantiksi. Mitään
erinäistä mainetta hänen sotatöistänsä ei kuitenkaan sen ajan
historioissa tavata; nähtävästi ei hänen sotataitonsa siis ylennyt
tavallisuuden rajojen yläpuolelle.

Hornkaan ei jäänyt osattomaksi Kristiinan tuhlaavaisista


suosionosoituksista. V. 1651 hän sai, kuitenkin yhdessä orpanansa
Henrik Hornin kanssa, Marienburgin vapaaherrakunnan Liivinmaalla.

Tultuansa valtaneuvokseksi v. 1653, lähetettiin hänet


kenraalikuvernöörinä Inkeriä sekä Käkisalmen lääniä hallitsemaan.
Tämä oli, niinkuin tiedämme, melkein yhtä vaikea tehtävä kuin
ennen muinoin Augiaan tallin puhdistus. "Sanalla sanoen", kirjoitti
Horn tänne tultuansa, "kaikki on rappiolta; laki ja oikeus ovat peräti
unohduksissa, niin että täydellä syyllä voi sanoa täällä olevan
confusum chaos (mullinmallinen sekasorto). Jollei tätä muuteta,
saavat nuo herrojen palvelijat ja voudit, joiden käsissä nyt kaikki on,
pian koko maan nurin käännetyksi." Näistä sanoista näkyy, ettei
uudelta kenraalikuvernööriltä puuttunut rehellistä tahtoa alustansa
tilaa parantamaan. Näiden sanojen mukaiset olivat myös hänen
tekonsa. Tosin ei tiedetä, hänkö kehoitti kuningasta jyrkkään
kieltoon, kun Käkisalmen läänin lahjoitusmaanisännät tähän aikaan
tahtoivat poistaa rahvaan ainoan suojan oikeudessa ja talonpoikaisen
lautakunnan sijaan asettaa kaksi aatelista asessoria. Mutta hyvin
luultavaa on, että hänellä oli osaa tämän hankkeen
tyhjäksitekemisessä; sillä heti sen jälkeen näemme hänen pitävän
huolta rahvaan turvaamisesta toisellakin tavalla. Hän näet käski, että
siitä lähtien kruununvoutien piti olla läsnä käräjillä valvomassa,
etteivät aatelin asettamat tuomarit tekisi vääryyttä. Itse
kuninkaankin vaatimuksia vastaan hän joskus puolusti lääniläisiänsä.
Kaarle X oli päättänyt heiltä ruveta ottamaan Ruotsissa ja Suomessa
tavallista henkiveroa, josta he tähän asti olivat olleet vapaina. Mutta
Horn ilmoitti Käkisalmen rahvaan olevan muutenkin yltäkyllin veroilla
rasitetun, ja sanoi pelkäävänsä, että he, jos heitä vielä enemmän
rasitettaisiin, karkaisivat Venäjän puolelle. Kuningas murisi hiukan
vastaan; vaan henkivero jäi kun jäikin karjalaisilta ottamatta.

Kummeksia voisi, että Horn, vaikka hän olikin rahvaan mies,


kuitenkin, niinkuin olemme nähneet, oli vihoissaan Cröellin kanteista
ja valituksista, jotka myös talonpojan etua tarkoittavat. Mutta syynä
siihen oli nähtävästi sama seikka, joka nostatti Brahenkin mielen
tuota rohkeaa kansantribunia vastaan. Horn oli täysi ylimys aikansa
tavan mukaan; hän ei suvainnut alhaisen kansan sekaantumista
hallituksen tekoihin. Sama mieliala näkyy myös eräästä hänen
kirjeestään, jonka hän v. 1652 kirjoitti sedällensä, vanhalle Kustaa
Hornille. Hän valittaa näet, että silloisten valtiopäivien loppu oli tullut
viivytetyksi talonpoikien vastahakoisuuden tähden. "Näyttää siltä",
lopettaa hän, "että nuo miehet heille kaksi vuotta sitten annettujen
liikojen vapauksien vuoksi ovat kovinkin paisuneet." Mutta jos hän
olikin ylimysvallan harrastaja, niin hän oli kuitenkin, samoin kuin
Brahe, jalomielinen aristokraatti; hän tahtoi käyttää valtaansa kansan
hyväksi. Myöskin yhteisen isänmaan eduksi hän oli aina altis
antamaan runsaita uhreja aatelin suurista rikkauksista. Lopulla v.
1656 esim. oli Narvassa paljon sairaita sotamiehiä, joista hyvin moni
kuoli senkin vuoksi, ettei heille ollut linnan varoista antaa muuta kuin
leipää ja vettä ravinnoksi. Silloin rupesi Horn ruokkimaan suurta
joukkoa heitä omasta keittiöstänsä ja sai muutamia virkamiehiä sekä
porvareita samaten armahtamaan toisia. V. 1658 taas, kun Turun
läänin aatelisto näytti olevan vastahakoinen myöntämään sotaan
muonavaroja, kuljetti hän kumminkin omista kartanoistaan viljaa
kruunun makasiineihin sen määrän mukaan, johon Uudenmaan-
Hämeen läänissä oli suostuttu.

Tämmöisen hallitusmiehen alaisena olisi kenties kreikanuskoisten


karjalaisten vihamielisyys vähitellen saattanut lauhtua, viihtyä, jollei
Venäjän sota niin kovin pian olisi keskeyttänyt kaikkia uuden
kenraalikuvernöörin rauhallisia toimia. Nyt hän taas samalla innolla
rupesi valvomaan lääninsä etua puolustamalla sitä ulkovihollista
vastaan. Siksi olisi hän tarvinnut enemmän väkeä, ja joutui pahaan
riitaan De la Gardien kanssa, kun ei tämä totellut kuninkaan käskyä
eikä lähettänyt Karjalan rakuunia kotiin. "Suokoon Jumala, että
minulla olisi 1,000 kunnon ratsumiestä!" valitti hän kuninkaalle;
"mutta nyt täytyy minun surukseni ja harmikseni antaa venäläisten
tehdä, mitä tahtovat." Ja Leijonhufvudille Liivinmaalle hän kirjoitti
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy