<?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>Environment Properties</title> <link rel="stylesheet" href="gettingStarted.css" type="text/css" /> <meta name="generator" content="DocBook XSL Stylesheets V1.62.4" /> <link rel="home" href="index.html" title="Getting Started with Berkeley DB" /> <link rel="up" href="Env.html" title="Chapter 2. Database Environments" /> <link rel="previous" href="EnvClose.html" title="Closing Database Environments" /> <link rel="next" href="dpl.html" title="Part I. Programming with the Direct Persistence Layer" /> </head> <body> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr> <th colspan="3" align="center">Environment Properties</th> </tr> <tr> <td width="20%" align="left"><a accesskey="p" href="EnvClose.html">Prev</a> </td> <th width="60%" align="center">Chapter 2. Database Environments</th> <td width="20%" align="right"> <a accesskey="n" href="dpl.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="EnvProps"></a>Environment Properties</h2> </div> </div> <div></div> </div> <p>You set properties for the <tt class="classname">Environment</tt> using the <tt class="classname">EnvironmentConfig</tt> class. You can also set properties for a specific <tt class="classname">Environment</tt> instance using <tt class="classname">EnvironmentMutableConfig</tt>. </p> <div class="sect2" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h3 class="title"><a id="envconfig"></a>The EnvironmentConfig Class</h3> </div> </div> <div></div> </div> <p> The <tt class="classname">EnvironmentConfig</tt> class makes a large number of fields and methods available to you. Describing all of these tuning parameters is beyond the scope of this manual. However, there are a few properties that you are likely to want to set. They are described here.</p> <p>Note that for each of the properties that you can commonly set, there is a corresponding getter method. Also, you can always retrieve the <tt class="classname">EnvironmentConfig</tt> object used by your environment using the <tt class="methodname">Environment.getConfig()</tt> method. </p> <p> You set environment configuration parameters using the following methods on the <tt class="classname">EnvironmentConfig</tt> class: </p> <div class="itemizedlist"> <ul type="disc"> <li> <p> <tt class="methodname">EnvironmentConfig.setAllowCreate()</tt> </p> <p>If <tt class="literal">true</tt>, the database environment is created when it is opened. If <tt class="literal">false</tt>, environment open fails if the environment does not exist. This property has no meaning if the database environment already exists. Default is <tt class="literal">false</tt>.</p> </li> <li> <p> <tt class="methodname">EnvironmentConfig.setReadOnly()</tt> </p> <p>If <tt class="literal">true</tt>, then all databases opened in this environment must be opened as read-only. If you are writing a multi-process application, then all but one of your processes must set this value to <tt class="literal">true</tt>. Default is <tt class="literal">false</tt>.</p> </li> <li> <p> <tt class="methodname">EnvironmentConfig.setTransactional()</tt> </p> <p>If <tt class="literal">true</tt>, configures the database environment to support transactions. Default is <tt class="literal">false</tt>.</p> </li> </ul> </div> <p>For example:</p> <pre class="programlisting">package db.gettingStarted; import com.sleepycat.db.DatabaseException; import com.sleepycat.db.Environment; import com.sleepycat.db.EnvironmentConfig; import java.io.File; import java.io.FileNotFoundException; ... Environment myDatabaseEnvironment = null; try { EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setAllowCreate(true); envConfig.setTransactional(true); myDatabaseEnvironment = new Environment(new File("/export/dbEnv"), envConfig); } catch (DatabaseException dbe) { System.err.println(dbe.toString()); System.exit(1); } catch (FileNotFoundException fnfe) { System.err.println(fnfe.toString()); System.exit(-1); } </pre> </div> <div class="sect2" lang="en" xml:lang="en"> <div class="titlepage"> <div> <div> <h3 class="title"><a id="envhandleconfig"></a>EnvironmentMutableConfig</h3> </div> </div> <div></div> </div> <p> <tt class="classname">EnvironmentMutableConfig</tt> manages properties that can be reset after the <tt class="classname">Environment</tt> object has been constructed. In addition, <tt class="classname">EnvironmentConfig</tt> extends <tt class="classname">EnvironmentMutableConfig</tt>, so you can set these mutable properties at <tt class="classname">Environment</tt> construction time if necessary. </p> <p> The <tt class="classname">EnvironmentMutableConfig</tt> class allows you to set the following properties: </p> <div class="itemizedlist"> <ul type="disc"> <li> <p> <tt class="literal">setCachePercent()</tt> </p> <p> Determines the percentage of JVM memory available to the DB cache. See <a href="cachesize.html">Selecting the Cache Size</a> for more information. </p> </li> <li> <p> <tt class="literal">setCacheSize()</tt> </p> <p> Determines the total amount of memory available to the database cache. See <a href="cachesize.html">Selecting the Cache Size</a> for more information. </p> </li> <li> <p> <tt class="literal">setTxnNoSync()</tt> </p> <p> Determines whether change records created due to a transaction commit are written to the backing log files on disk. A value of <tt class="literal">true</tt> causes the data to not be flushed to disk. See the <i class="citetitle">Getting Started with Transaction Processing for Java</i> guide for more information. </p> </li> <li> <p> <tt class="literal">setTxnWriteNoSync()</tt> </p> <p> Determines whether logs are flushed on transaction commit (the logs are still written, however). By setting this value to <tt class="literal">true</tt>, you potentially gain better performance than if you flush the logs on commit, but you do so by losing some of your transaction durability guarantees. See the <i class="citetitle">Getting Started with Transaction Processing for Java</i> guide for more information. </p> </li> </ul> </div> <p> There is also a corresponding getter method (<tt class="methodname">getTxnNoSync()</tt>). Moreover, you can always retrieve your environment's <tt class="classname">EnvironmentMutableConfig</tt> object by using the <tt class="methodname">Environment.getMutableConfig()</tt> method. </p> <p> For example: </p> <pre class="programlisting">package db.gettingStarted; import com.sleepycat.db.DatabaseException; import com.sleepycat.db.Environment; import com.sleepycat.db.EnvironmentMutableConfig; import java.io.File; import java.io.FileNotFoundException; ... try { Environment myEnv = new Environment(new File("/export/dbEnv"), null); EnvironmentMutableConfig envMutableConfig = new EnvironmentMutableConfig(); envMutableConfig.setTxnNoSync(true); myEnv.setMutableConfig(envMutableConfig); } catch (DatabaseException dbe) { // Exception handling goes here } catch (FileNotFoundException fnfe) { // Exception handling goes here }</pre> </div> </div> <div class="navfooter"> <hr /> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"><a accesskey="p" href="EnvClose.html">Prev</a> </td> <td width="20%" align="center"> <a accesskey="u" href="Env.html">Up</a> </td> <td width="40%" align="right"> <a accesskey="n" href="dpl.html">Next</a></td> </tr> <tr> <td width="40%" align="left" valign="top">Closing Database Environments </td> <td width="20%" align="center"> <a accesskey="h" href="index.html">Home</a> </td> <td width="40%" align="right" valign="top"> Part I. Programming with the Direct Persistence Layer</td> </tr> </table> </div> </body> </html>