﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-◎ヤ撧吥菔瀭o┊。&#x7;``。-随笔分类-Hibernate</title><link>http://www.blogjava.net/hllwuxin/category/25993.html</link><description>刪除昨天啲煩惱.﹖選擇今天啲快樂.﹖設置明天啲幸福.﹖ </description><language>zh-cn</language><lastBuildDate>Thu, 20 Sep 2007 05:26:27 GMT</lastBuildDate><pubDate>Thu, 20 Sep 2007 05:26:27 GMT</pubDate><ttl>60</ttl><item><title> Hibernate 参数设置一览表</title><link>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146442.html</link><dc:creator>優雅Ｄě頽廢</dc:creator><author>優雅Ｄě頽廢</author><pubDate>Wed, 19 Sep 2007 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146442.html</guid><wfw:comment>http://www.blogjava.net/hllwuxin/comments/146442.html</wfw:comment><comments>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146442.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hllwuxin/comments/commentRss/146442.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hllwuxin/services/trackbacks/146442.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id="blogtext__fks_qnIMoPC_-qFbwaC2GoWdZmvqZoFqeqXx">Hibernate配置属性
<table summary="&amp;10;                Hibernate配置属性&amp;10;            " border="1">
    <colgroup><strong>
    <col>
    <col></strong></colgroup>
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">hibernate.dialect</font></tt></td>
            <td>一个Hibernate <tt><font face="新宋体">Dialect</font></tt>类名允许Hibernate针对特定的关系数据库生成优化的SQL. <span>取值</span> <tt><font face="新宋体">full.classname.of.Dialect</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.show_sql</font></tt></td>
            <td>输出所有SQL语句到控制台. 有一个另外的选择是把<tt><font face="新宋体">org.hibernate.SQL</font></tt>这个log category设为<tt><font face="新宋体">debug</font></tt>。 <span>eg.</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.format_sql</font></tt></td>
            <td>在log和console中打印出更漂亮的SQL。 <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.default_schema</font></tt></td>
            <td>在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上. <span>取值</span> <tt><font face="新宋体">SCHEMA_NAME</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.default_catalog</font></tt></td>
            <td>在生成的SQL中, 将给定的catalog附加于非全限定名的表名上. <span>取值</span> <tt><font face="新宋体">CATALOG_NAME</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.session_factory_name</font></tt></td>
            <td><tt><font face="新宋体">SessionFactory</font></tt>创建后，将自动使用这个名字绑定到JNDI中. <span>取值</span> <tt><font face="新宋体">jndi/composite/name</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.max_fetch_depth</font></tt></td>
            <td>为单向关联(一对一, 多对一)的外连接抓取（outer join fetch）树设置最大深度. 值为<tt><font face="新宋体">0</font></tt>意味着将关闭默认的外连接抓取. <span>取值</span> 建议在<tt><font face="新宋体">0</font></tt>到<tt><font face="新宋体">3</font></tt>之间取值 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.default_batch_fetch_size</font></tt></td>
            <td>为Hibernate关联的批量抓取设置默认数量. <span>取值</span> 建议的取值为<tt><font face="新宋体">4</font></tt>, <tt><font face="新宋体">8</font></tt>, 和<tt><font face="新宋体">16</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.default_entity_mode</font></tt></td>
            <td>为由这个<tt><font face="新宋体">SessionFactory</font></tt>打开的所有Session指定默认的实体表现模式. <span>取值</span> <tt><font face="新宋体">dynamic-map</font></tt>, <tt><font face="新宋体">dom4j</font></tt>, <tt><font face="新宋体">pojo</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.order_updates</font></tt></td>
            <td>强制Hibernate按照被更新数据的主键，为SQL更新排序。这么做将减少在高并发系统中事务的死锁。 <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.generate_statistics</font></tt></td>
            <td>如果开启, Hibernate将收集有助于性能调节的统计数据. <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.use_identifer_rollback</font></tt></td>
            <td>如果开启, 在对象被删除时生成的标识属性将被重设为默认值. <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.use_sql_comments</font></tt></td>
            <td>如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为<tt><font face="新宋体">false</font></tt>. <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
    </tbody>
</table>
<div><a></a>
<p><strong>表&nbsp;3.4.&nbsp; Hibernate JDBC和连接(connection)属性 </strong></p>
<table summary="&amp;10;                Hibernate JDBC和连接(connection)属性&amp;10;            " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.fetch_size</font></tt></td>
            <td>非零值，指定JDBC抓取数量的大小 (调用<tt><font face="新宋体">Statement.setFetchSize()</font></tt>). </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.batch_size</font></tt></td>
            <td>非零值，允许Hibernate使用JDBC2的批量更新. <span>取值</span> 建议取<tt><font face="新宋体">5</font></tt>到<tt><font face="新宋体">30</font></tt>之间的值 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.batch_versioned_data</font></tt></td>
            <td>如果你想让你的JDBC驱动从<tt><font face="新宋体">executeBatch()</font></tt>返回正确的行计数 , 那么将此属性设为<tt><font face="新宋体">true</font></tt>(开启这个选项通常是安全的). 同时，Hibernate将为自动版本化的数据使用批量DML. 默认值为<tt><font face="新宋体">false</font></tt>. <span>eg.</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.factory_class</font></tt></td>
            <td>选择一个自定义的<tt><font face="新宋体">Batcher</font></tt>. 多数应用程序不需要这个配置属性. <span>eg.</span> <tt><font face="新宋体">classname.of.Batcher</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.use_scrollable_resultset</font></tt></td>
            <td>允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时，这个选项才是必要的, 否则Hibernate会使用连接的元数据. <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.use_streams_for_binary</font></tt></td>
            <td>在JDBC读写<tt><font face="新宋体">binary (二进制)</font></tt>或<tt><font face="新宋体">serializable (可序列化)</font></tt> 的类型时使用流(stream)(系统级属性). <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jdbc.use_get_generated_keys</font></tt></td>
            <td>在数据插入数据库之后，允许使用JDBC3 <tt><font face="新宋体">PreparedStatement.getGeneratedKeys()</font></tt> 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题，请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力. <span>取值</span> <tt><font face="新宋体">true|false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.connection.provider_class</font></tt></td>
            <td>自定义<tt><font face="新宋体">ConnectionProvider</font></tt>的类名, 此类用来向Hibernate提供JDBC连接. <span>取值</span> <tt><font face="新宋体">classname.of.ConnectionProvider</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.connection.isolation</font></tt></td>
            <td>设置JDBC事务隔离级别. 查看<tt><font face="新宋体">java.sql.Connection</font></tt>来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别. <span>取值</span> <tt><font face="新宋体">1, 2, 4, 8</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.connection.autocommit</font></tt></td>
            <td>允许被缓存的JDBC连接开启自动提交(autocommit) (不建议). <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.connection.release_mode</font></tt></td>
            <td>指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用<tt><font face="新宋体">after_statement</font></tt>, 这样在每次JDBC调用后，都会主动的释放连接. 对于非JTA的连接, 使用<tt><font face="新宋体">after_transaction</font></tt>在每个事务结束时释放连接是合理的. <tt><font face="新宋体">auto</font></tt>将为JTA和CMT事务策略选择<tt><font face="新宋体">after_statement</font></tt>, 为JDBC事务策略选择<tt><font face="新宋体">after_transaction</font></tt>. <span>取值</span> <tt><font face="新宋体">on_close</font></tt> | <tt><font face="新宋体">after_transaction</font></tt> | <tt><font face="新宋体">after_statement</font></tt> | <tt><font face="新宋体">auto</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.connection.<span><em>&lt;propertyName&gt;</em></span></font></tt></td>
            <td>将JDBC属性<tt><font face="新宋体">propertyName</font></tt>传递到<tt><font face="新宋体">DriverManager.getConnection()</font></tt>中去. </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.jndi.<span><em>&lt;propertyName&gt;</em></span></font></tt></td>
            <td>将属性<tt><font face="新宋体">propertyName</font></tt>传递到JNDI <tt><font face="新宋体">InitialContextFactory</font></tt>中去. </td>
        </tr>
    </tbody>
</table>
</div>
<div><a></a>
<p><strong>表&nbsp;3.5.&nbsp; Hibernate缓存属性 </strong></p>
<table summary="&amp;10;                Hibernate缓存属性&amp;10;            " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.provider_class</font></tt></td>
            <td>自定义的<tt><font face="新宋体">CacheProvider</font></tt>的类名. <span>取值</span> <tt><font face="新宋体">classname.of.CacheProvider</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.use_minimal_puts</font></tt></td>
            <td>以频繁的读操作为代价, 优化二级缓存来最小化写操作. 在Hibernate3中，这个设置对的集群缓存非常有用, 对集群缓存的实现而言，默认是开启的. <span>取值</span> <tt><font face="新宋体">true|false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.use_query_cache</font></tt></td>
            <td>允许查询缓存, 个别查询仍然需要被设置为可缓存的. <span>取值</span> <tt><font face="新宋体">true|false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.use_second_level_cache</font></tt></td>
            <td>能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<tt><font face="新宋体">&lt;cache&gt;</font></tt>的类，会默认开启二级缓存. <span>取值</span> <tt><font face="新宋体">true|false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.query_cache_factory</font></tt></td>
            <td>自定义实现<tt><font face="新宋体">QueryCache</font></tt>接口的类名, 默认为内建的<tt><font face="新宋体">StandardQueryCache</font></tt>. <span>取值</span> <tt><font face="新宋体">classname.of.QueryCache</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.region_prefix</font></tt></td>
            <td>二级缓存区域名的前缀. <span>取值</span> <tt><font face="新宋体">prefix</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cache.use_structured_entries</font></tt></td>
            <td>强制Hibernate以更人性化的格式将数据存入二级缓存. <span>取值</span> <tt><font face="新宋体">true|false</font></tt> </td>
        </tr>
    </tbody>
</table>
</div>
<div><a></a>
<p><strong>表&nbsp;3.6.&nbsp; Hibernate事务属性 </strong></p>
<table summary="&amp;10;                Hibernate事务属性&amp;10;            " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">hibernate.transaction.factory_class</font></tt></td>
            <td>一个<tt><font face="新宋体">TransactionFactory</font></tt>的类名, 用于Hibernate <tt><font face="新宋体">Transaction</font></tt> API (默认为<tt><font face="新宋体">JDBCTransactionFactory</font></tt>). <span>取值</span> <tt><font face="新宋体">classname.of.TransactionFactory</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">jta.UserTransaction</font></tt></td>
            <td>一个JNDI名字，被<tt><font face="新宋体">JTATransactionFactory</font></tt>用来从应用服务器获取JTA <tt><font face="新宋体">UserTransaction</font></tt>. <span>取值</span> <tt><font face="新宋体">jndi/composite/name</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.transaction.manager_lookup_class</font></tt></td>
            <td>一个<tt><font face="新宋体">TransactionManagerLookup</font></tt>的类名 - 当使用JVM级缓存，或在JTA环境中使用hilo生成器的时候需要该类. <span>取值</span> <tt><font face="新宋体">classname.of.TransactionManagerLookup</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.transaction.flush_before_completion</font></tt></td>
            <td>如果开启, session在事务完成后将被自动清洗(flush)。 现在更好的方法是使用自动session上下文管理。<span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.transaction.auto_close_session</font></tt></td>
            <td>如果开启, session在事务完成后将被自动关闭。 现在更好的方法是使用自动session上下文管理。<span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
    </tbody>
</table>
</div>
<div><a></a>
<p><strong>表&nbsp;3.7.&nbsp; 其他属性 </strong></p>
<table summary="&amp;10;                其他属性&amp;10;            " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>属性名 </th>
            <th>用途 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">hibernate.current_session_context_class</font></tt></td>
            <td>为"当前" <tt><font face="新宋体">Session</font></tt>指定一个(自定义的)策略。<span>eg.</span> <tt><font face="新宋体">jta</font></tt> | <tt><font face="新宋体">thread</font></tt> | <tt><font face="新宋体">custom.Class</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.query.factory_class</font></tt></td>
            <td>选择HQL解析器的实现. <span>取值</span> <tt><font face="新宋体">org.hibernate.hql.ast.ASTQueryTranslatorFactory</font></tt> or <tt><font face="新宋体">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.query.substitutions</font></tt></td>
            <td>将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字). <span>取值</span> <tt><font face="新宋体">hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.hbm2ddl.auto</font></tt></td>
            <td>在<tt><font face="新宋体">SessionFactory</font></tt>创建时，自动检查数据库结构，或者将数据库schema的DDL导出到数据库. 使用 <tt><font face="新宋体">create-drop</font></tt>时,在显式关闭<tt><font face="新宋体">SessionFactory</font></tt>时，将drop掉数据库schema. <span>取值</span> <tt><font face="新宋体">validate</font></tt> | <tt><font face="新宋体">update</font></tt> | <tt><font face="新宋体">create</font></tt> | <tt><font face="新宋体">create-drop</font></tt> </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">hibernate.cglib.use_reflection_optimizer</font></tt></td>
            <td>开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在<tt><font face="新宋体">hibernate.cfg.xml</font></tt>中设置此属性. <span>取值</span> <tt><font face="新宋体">true</font></tt> | <tt><font face="新宋体">false</font></tt> </td>
        </tr>
    </tbody>
</table>
</div>
<div>
<div>
<div>
<div>
<h3><a></a>3.4.1.&nbsp; SQL方言 </h3>
</div>
</div>
<div></div>
</div>
<p>你应当总是为你的数据库将<tt><font face="新宋体">hibernate.dialect</font></tt>属性设置成正确的 <tt><font face="新宋体">org.hibernate.dialect.Dialect</font></tt>子类. 如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫. </p>
<div><a></a>
<p><strong>表&nbsp;3.8.&nbsp; Hibernate SQL方言 (<tt><font face="新宋体">hibernate.dialect</font></tt>) </strong></p>
<table summary="&amp;10;                    Hibernate SQL方言 (hibernate.dialect)&amp;10;                " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>RDBMS</th>
            <th>方言 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>DB2</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.DB2Dialect</font></tt></td>
        </tr>
        <tr>
            <td>DB2 AS/400</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.DB2400Dialect</font></tt></td>
        </tr>
        <tr>
            <td>DB2 OS390</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.DB2390Dialect</font></tt></td>
        </tr>
        <tr>
            <td>PostgreSQL</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.PostgreSQLDialect</font></tt></td>
        </tr>
        <tr>
            <td>MySQL</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.MySQLDialect</font></tt></td>
        </tr>
        <tr>
            <td>MySQL with InnoDB</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.MySQLInnoDBDialect</font></tt></td>
        </tr>
        <tr>
            <td>MySQL with MyISAM</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.MySQLMyISAMDialect</font></tt></td>
        </tr>
        <tr>
            <td>Oracle (any version)</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.OracleDialect</font></tt></td>
        </tr>
        <tr>
            <td>Oracle 9i/10g</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.Oracle9Dialect</font></tt></td>
        </tr>
        <tr>
            <td>Sybase</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.SybaseDialect</font></tt></td>
        </tr>
        <tr>
            <td>Sybase Anywhere</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.SybaseAnywhereDialect</font></tt></td>
        </tr>
        <tr>
            <td>Microsoft SQL Server</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.SQLServerDialect</font></tt></td>
        </tr>
        <tr>
            <td>SAP DB</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.SAPDBDialect</font></tt></td>
        </tr>
        <tr>
            <td>Informix</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.InformixDialect</font></tt></td>
        </tr>
        <tr>
            <td>HypersonicSQL</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.HSQLDialect</font></tt></td>
        </tr>
        <tr>
            <td>Ingres</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.IngresDialect</font></tt></td>
        </tr>
        <tr>
            <td>Progress</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.ProgressDialect</font></tt></td>
        </tr>
        <tr>
            <td>Mckoi SQL</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.MckoiDialect</font></tt></td>
        </tr>
        <tr>
            <td>Interbase</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.InterbaseDialect</font></tt></td>
        </tr>
        <tr>
            <td>Pointbase</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.PointbaseDialect</font></tt></td>
        </tr>
        <tr>
            <td>FrontBase</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.FrontbaseDialect</font></tt></td>
        </tr>
        <tr>
            <td>Firebird</td>
            <td><tt><font face="新宋体">org.hibernate.dialect.FirebirdDialect</font></tt></td>
        </tr>
    </tbody>
</table>
</div>
</div>
<div></div>
<div>
<p><strong>表&nbsp;3.9.&nbsp; Hibernate日志类别 </strong></p>
<table summary="&amp;10;                    Hibernate日志类别&amp;10;                " border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>类别 </th>
            <th>功能 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.SQL</font></tt></td>
            <td>在所有SQL DML语句被执行时为它们记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.type</font></tt></td>
            <td>为所有JDBC参数记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.tool.hbm2ddl</font></tt></td>
            <td>在所有SQL DDL语句执行时为它们记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.pretty</font></tt></td>
            <td>在session清洗(flush)时，为所有与其关联的实体(最多20个)的状态记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.cache</font></tt></td>
            <td>为所有二级缓存的活动记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction</font></tt></td>
            <td>为事务相关的活动记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.jdbc</font></tt></td>
            <td>为所有JDBC资源的获取记录日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.hql.AST</font></tt></td>
            <td>在解析查询的时候,记录HQL和SQL的AST分析日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.secure</font></tt></td>
            <td>为JAAS认证请求做日志 </td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate</font></tt></td>
            <td>为任何Hibernate相关信息做日志 (信息量较大, 但对查错非常有帮助) </td>
        </tr>
    </tbody>
</table>
</div>
<div>
<p><strong>表&nbsp;3.10.&nbsp;JTA TransactionManagers</strong></p>
<table summary="JTA TransactionManagers" border="1">
    <colgroup>
    <col>
    <col></colgroup>
    <thead>
        <tr>
            <th>Transaction工厂类 </th>
            <th align="center">应用程序服务器 </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.JBossTransactionManagerLookup</font></tt></td>
            <td align="center">JBoss</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.WeblogicTransactionManagerLookup</font></tt></td>
            <td align="center">Weblogic</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.WebSphereTransactionManagerLookup</font></tt></td>
            <td align="center">WebSphere</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</font></tt></td>
            <td align="center">WebSphere 6</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.OrionTransactionManagerLookup</font></tt></td>
            <td align="center">Orion</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.ResinTransactionManagerLookup</font></tt></td>
            <td align="center">Resin</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.JOTMTransactionManagerLookup</font></tt></td>
            <td align="center">JOTM</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.JOnASTransactionManagerLookup</font></tt></td>
            <td align="center">JOnAS</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.JRun4TransactionManagerLookup</font></tt></td>
            <td align="center">JRun4</td>
        </tr>
        <tr>
            <td><tt><font face="新宋体">org.hibernate.transaction.BESTransactionManagerLookup</font></tt></td>
            <td align="center">Borland ES</td>
        </tr>
    </tbody>
</table>
</div>
</div>
<img src ="http://www.blogjava.net/hllwuxin/aggbug/146442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hllwuxin/" target="_blank">優雅Ｄě頽廢</a> 2007-09-19 13:28 <a href="http://www.blogjava.net/hllwuxin/archive/2007/09/19/146442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Hibernate包祥解</title><link>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146441.html</link><dc:creator>優雅Ｄě頽廢</dc:creator><author>優雅Ｄě頽廢</author><pubDate>Wed, 19 Sep 2007 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146441.html</guid><wfw:comment>http://www.blogjava.net/hllwuxin/comments/146441.html</wfw:comment><comments>http://www.blogjava.net/hllwuxin/archive/2007/09/19/146441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hllwuxin/comments/commentRss/146441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hllwuxin/services/trackbacks/146441.html</trackback:ping><description><![CDATA[<div class="g_t_left c07 content" id="blogtext__fks_sffsilOSxkt7XcaYhGmeVKEcy4pTW4C2">
<p style="text-indent: 2em">Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。 </p>
<p style="text-indent: 2em">　　下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包： </p>
<p style="text-indent: 2em">　　hibernate2.jar: </p>
<p style="text-indent: 2em">　　Hibernate的库，没有什么可说的，必须使用的jar包 </p>
<p style="text-indent: 2em">　　cglib-asm.jar: </p>
<p style="text-indent: 2em">　　CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包 </p>
<p style="text-indent: 2em">　　dom4j.jar: </p>
<p style="text-indent: 2em">　　dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。 </p>
<p style="text-indent: 2em">　　odmg.jar: </p>
<p style="text-indent: 2em">　　ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。 </p>
<p style="text-indent: 2em">　　commons-collections.jar： </p>
<p style="text-indent: 2em">　　Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。 </p>
<p style="text-indent: 2em">　　commons-beanutils.jar： </p>
<p style="text-indent: 2em">　　Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。 </p>
<p style="text-indent: 2em">　　commons-lang.jar: </p>
<p style="text-indent: 2em">　　Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。 </p>
<p style="text-indent: 2em">　　commons-logging.jar: </p>
<p style="text-indent: 2em">　　Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。</p>
<p style="text-indent: 2em">　　后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。 </p>
<p style="text-indent: 2em">　　使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。 </p>
<p style="text-indent: 2em">　　ant.jar: </p>
<p style="text-indent: 2em">　　Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包 </p>
<p style="text-indent: 2em">　　optional.jar： </p>
<p style="text-indent: 2em">　　Ant的一个辅助包。 </p>
<p style="text-indent: 2em">　　c3p0.jar： </p>
<p style="text-indent: 2em">　　C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。 </p>
<p style="text-indent: 2em">　　proxool.jar： </p>
<p style="text-indent: 2em">　　也是一个连接池，同上。 </p>
<p style="text-indent: 2em">　　commons-pool.jar, commons-dbcp.jar: </p>
<p style="text-indent: 2em">　　DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。 </p>
<p style="text-indent: 2em">　　实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。 </p>
<p style="text-indent: 2em">　　connector.jar: </p>
<p style="text-indent: 2em">　　JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。 </p>
<p style="text-indent: 2em">　　jaas.jar: </p>
<p style="text-indent: 2em">　　JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。 </p>
<p style="text-indent: 2em">　　jcs.jar： </p>
<p style="text-indent: 2em">　　如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。 </p>
<p style="text-indent: 2em">　　jdbc2_0-stdext.jar: </p>
<p style="text-indent: 2em">　　JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。 </p>
<p style="text-indent: 2em">　　jta.jar： </p>
<p style="text-indent: 2em">　　JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。 </p>
<p style="text-indent: 2em">　　junit.jar: </p>
<p style="text-indent: 2em">　　Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。 </p>
<p style="text-indent: 2em">　　xalan.jar, xerces.jar, xml-apis.jar: </p>
<p style="text-indent: 2em">　　Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。</p>
</div>
<img src ="http://www.blogjava.net/hllwuxin/aggbug/146441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hllwuxin/" target="_blank">優雅Ｄě頽廢</a> 2007-09-19 13:26 <a href="http://www.blogjava.net/hllwuxin/archive/2007/09/19/146441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>