📄 session-configuration.html
字号:
<tt class="literal">1, 2, 4, 8</tt> </p></td></tr><tr><td><tt class="literal">hibernate.connection.<span class="emphasis"><em><propertyName></em></span></tt></td><td> 把 <tt class="literal">propertyName</tt>这个JDBC 属性传递到<tt class="literal">DriverManager.getConnection()</tt>去 </td></tr><tr><td><tt class="literal">hibernate.connection.provider_class</tt></td><td> 指定一个自定义的<tt class="literal">ConnectionProvider</tt>类名 <p> <span class="strong">取值.</span> <tt class="literal">classname.of.ConnectionProvider</tt> </p></td></tr><tr><td><tt class="literal">hibernate.cache.provider_class</tt></td><td> 指定一个自定义的<tt class="literal">CacheProvider</tt>缓存提供者的类名 <p> <span class="strong">取值.</span> <tt class="literal">classname.of.CacheProvider</tt> </p></td></tr><tr><td><tt class="literal">hibernate.cache.use_minimal_puts</tt></td><td> 优化第二级缓存操作,减少写操作,代价是读操作更频繁(对于集群缓存很有用) <p> <span class="strong">取值.</span> <tt class="literal">true|false</tt> </p></td></tr><tr><td><tt class="literal">hibernate.cache.use_query_cache</tt></td><td> 打开查询缓存,每个查询仍然必须指明cacheable。 <p> <span class="strong">取值.</span> <tt class="literal">true|false</tt> </p></td></tr><tr><td><tt class="literal">hibernate.cache.region_prefix</tt></td><td> 用于第二级缓存区域名字的前缀 <p> <span class="strong">取值.</span> <tt class="literal">prefix</tt> </p></td></tr><tr><td><tt class="literal">hibernate.transaction.factory_class</tt></td><td> 指定一个自定义的<tt class="literal">TransactionFactory</tt>类名,Hibernate Transaction API将会使用(默认是<tt class="literal">JDBCTransactionFactory</tt>)。 <p> <span class="strong">取值.</span> <tt class="literal">classname.of.TransactionFactory</tt> </p></td></tr><tr><td><tt class="literal">jta.UserTransaction</tt></td><td><tt class="literal">JTATransactionFactory</tt> 用来从应用服务器获取JTA <tt class="literal">UserTransaction</tt>的JNDI名 <p> <span class="strong">取值.</span> <tt class="literal">jndi/composite/name</tt> </p></td></tr><tr><td><tt class="literal">hibernate.transaction.manager_lookup_class</tt></td><td><tt class="literal">TransactionManagerLookup</tt>的类名 - 当在JTA环境中,JVM级别的缓存被打开的时候使用. <p> <span class="strong">取值.</span> <tt class="literal">classname.of.TransactionManagerLookup</tt> </p></td></tr><tr><td><tt class="literal">hibernate.query.substitutions</tt></td><td> 把Hibernate查询中的一些短语替换为SQL短语(比如说短语可能是函数或者字符)。 <p> <span class="strong">取值.</span> <tt class="literal">hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</tt> </p></td></tr><tr><td><tt class="literal">hibernate.show_sql</tt></td><td> 把所有的SQL语句都输出到控制台 <p> <span class="strong">取值.</span> <tt class="literal">true</tt> | <tt class="literal">false</tt> </p></td></tr><tr><td><tt class="literal">hibernate.hbm2ddl.auto</tt></td><td> 在<tt class="literal">SessionFactory</tt>创建后,自动输出schema创建DDL语句到数据库.和<tt class="literal">create-drop</tt>同时使用的话,数据库schema会在<tt class="literal">SessionFactory</tt>显式关闭后被drop掉。 <p> <span class="strong">取值.</span> <tt class="literal">update</tt> | <tt class="literal">create</tt> | <tt class="literal">create-drop</tt> </p></td></tr></tbody></table></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="configuration-optional-dialects"></a>3.5.1. SQL Dialects SQL 方言</h3></div></div><div></div></div><p> 你总是可以为你的数据库设置一个<tt class="literal">hibernate.dialect</tt>方言,它是<tt class="literal">net.sf.hibernate.dialect.Dialect</tt> 的一个子类。如果你不需要使用基于<tt class="literal">native</tt>或者<tt class="literal">sequence</tt>的主键自动生成算法,或者悲观锁定(使用<tt class="literal">Session.lock()</tt> 或 <tt class="literal">Query.setLockMode()</tt>)的话,方言就可以不必指定。然而,假若你指定了一个方言,Hibernate会为上面列出的一些属性使用特殊默认值,省得你手工指定它们。 </p><div class="table"><a name="sql-dialects"></a><p class="title"><b>表 3.4. Hibernate SQL 方言 (<tt class="literal">hibernate.dialect</tt>)</b></p><table summary="Hibernate SQL 方言 (hibernate.dialect)" border="1"><colgroup><col><col></colgroup><thead><tr><th>RDBMS</th><th>方言</th></tr></thead><tbody><tr><td>DB2</td><td><tt class="literal">net.sf.hibernate.dialect.DB2Dialect</tt></td></tr><tr><td>DB2 AS/400</td><td><tt class="literal">net.sf.hibernate.dialect.DB2400Dialect</tt></td></tr><tr><td>DB2 OS390</td><td><tt class="literal">net.sf.hibernate.dialect.DB2390Dialect</tt></td></tr><tr><td>PostgreSQL</td><td><tt class="literal">net.sf.hibernate.dialect.PostgreSQLDialect</tt></td></tr><tr><td>MySQL</td><td><tt class="literal">net.sf.hibernate.dialect.MySQLDialect</tt></td></tr><tr><td>Oracle (any version)</td><td><tt class="literal">net.sf.hibernate.dialect.OracleDialect</tt></td></tr><tr><td>Oracle 9</td><td><tt class="literal">net.sf.hibernate.dialect.Oracle9Dialect</tt></td></tr><tr><td>Sybase</td><td><tt class="literal">net.sf.hibernate.dialect.SybaseDialect</tt></td></tr><tr><td>Sybase Anywhere</td><td><tt class="literal">net.sf.hibernate.dialect.SybaseAnywhereDialect</tt></td></tr><tr><td>Microsoft SQL Server</td><td><tt class="literal">net.sf.hibernate.dialect.SQLServerDialect</tt></td></tr><tr><td>SAP DB</td><td><tt class="literal">net.sf.hibernate.dialect.SAPDBDialect</tt></td></tr><tr><td>Informix</td><td><tt class="literal">net.sf.hibernate.dialect.InformixDialect</tt></td></tr><tr><td>HypersonicSQL</td><td><tt class="literal">net.sf.hibernate.dialect.HSQLDialect</tt></td></tr><tr><td>Ingres</td><td><tt class="literal">net.sf.hibernate.dialect.IngresDialect</tt></td></tr><tr><td>Progress</td><td><tt class="literal">net.sf.hibernate.dialect.ProgressDialect</tt></td></tr><tr><td>Mckoi SQL</td><td><tt class="literal">net.sf.hibernate.dialect.MckoiDialect</tt></td></tr><tr><td>Interbase</td><td><tt class="literal">net.sf.hibernate.dialect.InterbaseDialect</tt></td></tr><tr><td>Pointbase</td><td><tt class="literal">net.sf.hibernate.dialect.PointbaseDialect</tt></td></tr><tr><td>FrontBase</td><td><tt class="literal">net.sf.hibernate.dialect.FrontbaseDialect</tt></td></tr><tr><td>Firebird</td><td><tt class="literal">net.sf.hibernate.dialect.FirebirdDialect</tt></td></tr></tbody></table></div></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="configuration-optional-outerjoin"></a>3.5.2. 外连接抓取(Outer Join Fetching )</h3></div></div><div></div></div><p> 如果你的数据库支持ANSI或者Oracle风格的外连接,<span class="emphasis"><em>外连接抓取</em></span>可能提高性能,因为可以限制和数据库交互的数量(代价是数据库自身进行了更多的工作)。外连接抓取允许你在一个select语句中就可以得到一个由多对一或者一对一连接构成的对象图。 </p><p> 默认情况下,抓取在叶对象,拥有代理的对象或者产生对自身的引用时终止。 </p><p> 对一个<span class="emphasis"><em>特定关联</em></span>来说,通过在XML映射文件中设置<tt class="literal">outer-join</tt>属性可以控制是否开启抓取功能。 </p><p> 也可以设置<tt class="literal">hibernate.max_fetch_depth</tt>为<tt class="literal">0</tt>来<span class="emphasis"><em>全局</em></span>关闭此功能。如果设置为<tt class="literal">1</tt>或更高的数值,对所有的一对一和多对一关联会打开外连接抓取。默认情况下,它被设置为<tt class="literal">auto</tt>,即自动外连接。但是,一对多关联和集合永远不会使用外连接抓取,除非对每个特定的关联进行明确声明。这一行为可以在运行时通过Hibernate 查询重载。 </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="configuration-optional-binarystreams"></a>3.5.3. 二进制流</h3></div></div><div></div></div><p> Oracle限制通过它的JDBC驱动传递的<tt class="literal">byte</tt>数组的大小。如果你希望使用很大数量的<tt class="literal">binary</tt>或者<tt class="literal">serializable</tt> 类型的话,你需要打开<tt class="literal">hibernate.jdbc.use_streams_for_binary</tt>。<span class="emphasis"><em>这只能通过JVM级别设定</em></span> </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="configuration-optional-cacheprovider"></a>3.5.4. 自定义<tt class="literal">CacheProvider</tt></h3></div></div><div></div></div><p> 通过实现<tt class="literal">net.sf.hibernate.cache.CacheProvider</tt>接口,你可以整合一个JVM级别(或者集群的)第二级缓存进来。你可以通过<tt class="literal">hibernate.cache.provider_class</tt>选择某个自定义的实现。 </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="configuration-optional-transactionstrategy"></a>3.5.5. 事务策略配置</h3></div></div><div></div></div><p> 如果你希望使用Hibernate的<tt class="literal">Transaction</tt> API,你必须通过<tt class="literal">hibernate.transaction.factory_class</tt>属性指定一个<tt class="literal">Transaction</tt>实例的工厂类。 <tt class="literal">Transaction</tt> API隐藏了底层的事务机制,允许Hibernate代码在受管制和非受管制的环境下都可以运行。 </p><p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -