File: autocommit.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 158,360 kB
  • sloc: ansic: 448,411; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (171 lines) | stat: -rw-r--r-- 6,659 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Auto Commit</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
    <link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
    <link rel="prev" href="abortresults.html" title="Aborting a Transaction" />
    <link rel="next" href="nestedtxn.html" title="Nested Transactions" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Auto Commit</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 3. Transaction Basics</th>
          <td width="20%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="autocommit"></a>Auto Commit</h2>
          </div>
        </div>
      </div>
      <p>
            While transactions are frequently used to provide atomicity to
            multiple database 
            <span>
                    or store
            </span>
            operations, it is sometimes necessary to perform
            a single database 
            <span>
                    or store
            </span>
            operation under the control of a transaction.
            Rather than force you to obtain a transaction, perform the single 
            write operation, and then either commit or abort the transaction,
            you can automatically group this sequence of events using
            <span class="emphasis"><em>auto commit</em></span>.
        </p>
      <p>
            To use auto commit:
        </p>
      <div class="orderedlist">
        <ol type="1">
          <li>
            <p>
                        Open your environment and your databases 
                        <span>
                            or store
                        </span>
                        so that they support
                    transactions.  See <a class="xref" href="enabletxn.html" title="Chapter 2. Enabling Transactions">Enabling Transactions</a> 
                    for details.
                </p>
          </li>
          <li>
            <p>
                    Do not provide a transactional handle to the method that is
                    performing the database 
                        <span>
                            or store
                        </span>
                    write operation.
                </p>
          </li>
        </ol>
      </div>
      <p>
            Note that auto commit is not available for cursors. You must always
            open your cursor using a transaction if you want the cursor's
            operations to be transactional protected. See 
            <a class="xref" href="txncursor.html" title="Transactional Cursors">Transactional Cursors</a> for details on using
            transactional cursors.
        </p>
      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
        <h3 class="title">Note</h3>
        <p>
                Never have more than one active transaction in your thread
                at a time. This is especially a problem if you mix an
                explicit transaction with another operation that uses auto
                commit. Doing so can result in undetectable deadlocks.
            </p>
      </div>
      <p>
            For example, the following uses auto commit to perform the database write operation:
        </p>
      <pre class="programlisting">package db.txn;

import com.sleepycat.db.Database;
import com.sleepycat.db.DatabaseConfig;
import com.sleepycat.db.DatabaseEntry;
import com.sleepycat.db.DatabaseException;
import com.sleepycat.db.Environment;
import com.sleepycat.db.EnvironmentConfig;

import java.io.File;

...

Database myDatabase = null;
Environment myEnv = null;
try {
    EnvironmentConfig myEnvConfig = new EnvironmentConfig();
    myEnvConfig.setInitializeCache(true);
    myEnvConfig.setInitializeLocking(true);
    myEnvConfig.setInitializeLogging(true);
    myEnvConfig.setTransactional(true);

    myEnv = new Environment(new File("/my/env/home"),
                              myEnvConfig);

    // Open the database.
    DatabaseConfig dbConfig = new DatabaseConfig();
    dbConfig.setTransactional(true);
    dbConfig.setType(DatabaseType.BTREE);
    myDatabase = myEnv.openDatabase(null,              // txn handle
                                    "sampleDatabase",  // db file name
                                    null,              // db name
                                    dbConfig);
    String keyString = "thekey";
    String dataString = "thedata";
    DatabaseEntry key = 
        new DatabaseEntry(keyString.getBytes("UTF-8"));
    DatabaseEntry data = 
        new DatabaseEntry(dataString.getBytes("UTF-8"));

    // Perform the write. Because the database was opened to 
    // support transactions, this write is performed using auto commit.
    myDatabase.put(null, key, data);

} catch (DatabaseException de) {
    // Exception handling goes here
} </pre>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="abortresults.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="usingtxns.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="nestedtxn.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Aborting a Transaction </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Nested Transactions</td>
        </tr>
      </table>
    </div>
  </body>
</html>