1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>Opening a Transactional Environment and
7            
8            Store or Database
9            
10        </title>
11    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
12    <meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
13    <link rel="home" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
14    <link rel="up" href="enabletxn.html" title="Chapter��2.��Enabling Transactions" />
15    <link rel="previous" href="enabletxn.html" title="Chapter��2.��Enabling Transactions" />
16    <link rel="next" href="usingtxns.html" title="Chapter��3.��Transaction Basics" />
17  </head>
18  <body>
19    <div class="navheader">
20      <table width="100%" summary="Navigation header">
21        <tr>
22          <th colspan="3" align="center">Opening a Transactional Environment and
23            
24            Store or Database
25            
26        </th>
27        </tr>
28        <tr>
29          <td width="20%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a>��</td>
30          <th width="60%" align="center">Chapter��2.��Enabling Transactions</th>
31          <td width="20%" align="right">��<a accesskey="n" href="usingtxns.html">Next</a></td>
32        </tr>
33      </table>
34      <hr />
35    </div>
36    <div class="sect1" lang="en" xml:lang="en">
37      <div class="titlepage">
38        <div>
39          <div>
40            <h2 class="title" style="clear: both"><a id="envopen"></a>Opening a Transactional Environment and
41            
42            <span>Store or Database</span>
43            
44        </h2>
45          </div>
46        </div>
47        <div></div>
48      </div>
49      <p>
50            To enable transactions for your environment, you must initialize the
51            transactional subsystem. Note that doing this also initializes the
52            logging subsystem. In addition, you must initialize the memory pool
53            (in-memory cache). Frequently, but not always, you will also 
54            initialize the locking subsystem.  
55            
56            
57            
58            <span>
59                For example, to do this with the DPL:
60            </span>
61        </p>
62      <pre class="programlisting">package persist.txn;
63                                                                                                                                     
64import com.sleepycat.db.DatabaseException;
65import com.sleepycat.db.Environment;
66import com.sleepycat.db.EnvironmentConfig;
67
68import com.sleepycat.persist.EntityStore;
69import com.sleepycat.persist.StoreConfig;
70
71import java.io.File;
72import java.io.FileNotFoundException;
73                                                                                                                                     
74...
75                                                                                                                                     
76Environment myEnv = null;
77EntityStore myStore = null;
78try {
79    EnvironmentConfig myEnvConfig = new EnvironmentConfig();
80    StoreConfig storeConfig = new StoreConfig();
81
82    myEnvConfig.setInitializeCache(true);
83    myEnvConfig.setInitializeLocking(true);
84    myEnvConfig.setInitializeLogging(true);
85    myEnvConfig.setTransactional(true);
86
87    storeConfig.setTransactional(true);
88
89    myEnv = new Environment(new File("/my/env/home"),
90                              myEnvConfig);
91
92    myStore = new EntityStore(myEnv, "EntityStore", storeConfig);
93
94} catch (DatabaseException de) {
95    // Exception handling goes here
96} catch (FileNotFoundException fnfe) {
97     // Exception handling goes here
98}</pre>
99      <p>
100            And when using the base API:
101    </p>
102      <pre class="programlisting">package db.txn;
103                                                                                                                                     
104import com.sleepycat.db.DatabaseException;
105import com.sleepycat.db.Environment;
106import com.sleepycat.db.EnvironmentConfig;
107
108import java.io.File;
109import java.io.FileNotFoundException;
110                                                                                                                                     
111...
112                                                                                                                                     
113Environment myEnv = null;
114try {
115    EnvironmentConfig myEnvConfig = new EnvironmentConfig();
116    myEnvConfig.setInitializeCache(true);
117    myEnvConfig.setInitializeLocking(true);
118    myEnvConfig.setInitializeLogging(true);
119    myEnvConfig.setTransactional(true);
120
121    myEnv = new Environment(new File("/my/env/home"),
122                              myEnvConfig);
123
124} catch (DatabaseException de) {
125    // Exception handling goes here
126} catch (FileNotFoundException fnfe) {
127     // Exception handling goes here
128}</pre>
129      <p>
130        You then can use the <tt class="classname">Environment</tt> handle to open
131        your database(s) using <tt class="methodname">Environment.openDatabase()</tt>.
132        Note that when you do this, you must set
133                <tt class="methodname">DatabaseConfig.setTransactional()</tt>
134        to <tt class="literal">true</tt>. Note that in effect this causes the
135        database open to be transactional protected because it results in
136        auto commit being used for the open (if a transaction is not explicitly
137        used to protect the open).
138        For example:
139    </p>
140      <pre class="programlisting">package db.txn;
141                                                                                                                                     
142<b class="userinput"><tt>import com.sleepycat.db.Database;
143import com.sleepycat.db.DatabaseType;
144import com.sleepycat.db.DatabaseConfig;</tt></b>
145import com.sleepycat.db.DatabaseException;
146import com.sleepycat.db.Environment;
147import com.sleepycat.db.EnvironmentConfig;
148
149import java.io.File;
150import java.io.FileNotFoundException;
151                                                                                                                                     
152...
153                                                                                                                                     
154<b class="userinput"><tt>Database myDatabase = null;</tt></b>
155Environment myEnv = null;
156try {
157    EnvironmentConfig myEnvConfig = new EnvironmentConfig();
158    myEnvConfig.setInitializeCache(true);
159    myEnvConfig.setInitializeLocking(true);
160    myEnvConfig.setInitializeLogging(true);
161    myEnvConfig.setTransactional(true);
162
163    myEnv = new Environment(new File("/my/env/home"),
164                              myEnvConfig);
165
166    <b class="userinput"><tt>// Open the database.
167    DatabaseConfig dbConfig = new DatabaseConfig();
168    dbConfig.setTransactional(true);
169    dbConfig.setType(DatabaseType.BTREE);
170    myDatabase = myEnv.openDatabase(null,               // txn handle
171                                    "sampleDatabase",   // db file name
172                                    null,             // db name
173                                    dbConfig);</tt></b>
174} catch (DatabaseException de) {
175    // Exception handling goes here
176} catch (FileNotFoundException fnfe) {
177    // Exception handling goes here
178}</pre>
179      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
180        <h3 class="title">Note</h3>
181        <p>
182                Never close a database <span> or
183                        store </span> that has active transactions. Make sure
184            all transactions are resolved (either committed or aborted)
185            before closing the database.
186        </p>
187      </div>
188    </div>
189    <div class="navfooter">
190      <hr />
191      <table width="100%" summary="Navigation footer">
192        <tr>
193          <td width="40%" align="left"><a accesskey="p" href="enabletxn.html">Prev</a>��</td>
194          <td width="20%" align="center">
195            <a accesskey="u" href="enabletxn.html">Up</a>
196          </td>
197          <td width="40%" align="right">��<a accesskey="n" href="usingtxns.html">Next</a></td>
198        </tr>
199        <tr>
200          <td width="40%" align="left" valign="top">Chapter��2.��Enabling Transactions��</td>
201          <td width="20%" align="center">
202            <a accesskey="h" href="index.html">Home</a>
203          </td>
204          <td width="40%" align="right" valign="top">��Chapter��3.��Transaction Basics</td>
205        </tr>
206      </table>
207    </div>
208  </body>
209</html>
210