Hibernate配置属性详解

来源:互联网 发布:手机上喊麦用什么软件 编辑:程序博客网 时间:2024/04/26 12:47
 

表 3.3. Hibernate配置属性

属性名用途hibernate.dialect一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.

取值 full.classname.of.Dialect

hibernate.show_sql输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug

eg. true |false

hibernate.format_sql在log和console中打印出更漂亮的SQL。

取值 true |false

hibernate.default_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.

取值 SCHEMA_NAME

hibernate.default_catalog在生成的SQL中, 将给定的catalog附加于非全限定名的表名上.

取值 CATALOG_NAME

hibernate.session_factory_nameSessionFactory创建后,将自动使用这个名字绑定到JNDI中.

取值 jndi/composite/name

hibernate.max_fetch_depth为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取.

取值 建议在03之间取值

hibernate.default_batch_fetch_size为Hibernate关联的批量抓取设置默认数量.

取值 建议的取值为4,8, 和16

hibernate.default_entity_mode为由这个SessionFactory打开的所有Session指定默认的实体表现模式.

取值 dynamic-map,dom4j, pojo

hibernate.order_updates强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。

取值 true |false

hibernate.generate_statistics如果开启, Hibernate将收集有助于性能调节的统计数据.

取值 true |false

hibernate.use_identifer_rollback如果开启, 在对象被删除时生成的标识属性将被重设为默认值.

取值 true |false

hibernate.use_sql_comments如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为false.

取值 true |false

表 3.4. Hibernate JDBC和连接(connection)属性

属性名用途hibernate.jdbc.fetch_size非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()).hibernate.jdbc.batch_size非零值,允许Hibernate使用JDBC2的批量更新.

取值 建议取530之间的值

hibernate.jdbc.batch_versioned_data如果你想让你的JDBC驱动从executeBatch()返回正确的行计数 , 那么将此属性设为true(开启这个选项通常是安全的). 同时,Hibernate将为自动版本化的数据使用批量DML. 默认值为false.

eg. true |false

hibernate.jdbc.factory_class选择一个自定义的Batcher. 多数应用程序不需要这个配置属性.

eg. classname.of.Batcher

hibernate.jdbc.use_scrollable_resultset允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时,这个选项才是必要的, 否则Hibernate会使用连接的元数据.

取值 true |false

hibernate.jdbc.use_streams_for_binary在JDBC读写binary (二进制)serializable (可序列化) 的类型时使用流(stream)(系统级属性).

取值 true |false

hibernate.jdbc.use_get_generated_keys在数据插入数据库之后,允许使用JDBC3 PreparedStatement.getGeneratedKeys() 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题,请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力.

取值 true|false

hibernate.connection.provider_class自定义ConnectionProvider的类名, 此类用来向Hibernate提供JDBC连接.

取值 classname.of.ConnectionProvider

hibernate.connection.isolation设置JDBC事务隔离级别. 查看java.sql.Connection来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别.

取值 1, 2, 4, 8

hibernate.connection.autocommit允许被缓存的JDBC连接开启自动提交(autocommit) (不建议).

取值 true |false

hibernate.connection.release_mode指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的.auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.

取值 auto (默认) |on_close | after_transaction | after_statement

注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过SessionFactory.getCurrentSession得到的Session,所配置的CurrentSessionContext实现控制这些Session的连接释放模式。请参阅第 2.5 节 “上下文相关的(Contextual)Session”

hibernate.connection.<propertyName>将JDBC属性propertyName传递到DriverManager.getConnection()中去.hibernate.jndi.<propertyName>将属性propertyName传递到JNDIInitialContextFactory中去.

表 3.5. Hibernate缓存属性

属性名用途hibernate.cache.provider_class自定义的CacheProvider的类名.

取值 classname.of.CacheProvider

hibernate.cache.use_minimal_puts以频繁的读操作为代价, 优化二级缓存来最小化写操作. 在Hibernate3中,这个设置对的集群缓存非常有用, 对集群缓存的实现而言,默认是开启的.

取值 true|false

hibernate.cache.use_query_cache允许查询缓存, 个别查询仍然需要被设置为可缓存的.

取值 true|false

hibernate.cache.use_second_level_cache能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<cache>的类,会默认开启二级缓存.

取值 true|false

hibernate.cache.query_cache_factory自定义实现QueryCache接口的类名, 默认为内建的StandardQueryCache.

取值 classname.of.QueryCache

hibernate.cache.region_prefix二级缓存区域名的前缀.

取值 prefix

hibernate.cache.use_structured_entries强制Hibernate以更人性化的格式将数据存入二级缓存.

取值 true|false

表 3.6. Hibernate事务属性

属性名用途hibernate.transaction.factory_class一个TransactionFactory的类名, 用于HibernateTransaction API (默认为JDBCTransactionFactory).

取值 classname.of.TransactionFactory

jta.UserTransaction一个JNDI名字,被JTATransactionFactory用来从应用服务器获取JTAUserTransaction.

取值 jndi/composite/name

hibernate.transaction.manager_lookup_class一个TransactionManagerLookup的类名 - 当使用JVM级缓存,或在JTA环境中使用hilo生成器的时候需要该类.

取值 classname.of.TransactionManagerLookup

hibernate.transaction.flush_before_completion如果开启, session在事务完成后将被自动清洗(flush)。 现在更好的方法是使用自动session上下文管理。请参见第 2.5 节 “上下文相关的(Contextual)Session”

取值 true |false

hibernate.transaction.auto_close_session如果开启, session在事务完成后将被自动关闭。 现在更好的方法是使用自动session上下文管理。请参见第 2.5 节 “上下文相关的(Contextual)Session”

取值 true |false

表 3.7. 其他属性

属性名用途hibernate.current_session_context_class为"当前" Session指定一个(自定义的)策略。关于内置策略的详情,请参见第 2.5 节 “上下文相关的(Contextual)Session”

eg. jta |thread | managed | custom.Class

hibernate.query.factory_class选择HQL解析器的实现.

取值 org.hibernate.hql.ast.ASTQueryTranslatorFactory ororg.hibernate.hql.classic.ClassicQueryTranslatorFactory

hibernate.query.substitutions将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字).

取值 hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.autoSessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.

取值 validate |update | create | create-drop

hibernate.cglib.use_reflection_optimizer开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在hibernate.cfg.xml中设置此属性.

取值 true |false

3.4.1. SQL方言

你应当总是为你的数据库将hibernate.dialect属性设置成正确的org.hibernate.dialect.Dialect子类. 如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.

表 3.8. Hibernate SQL方言 (hibernate.dialect)

RDBMS方言DB2org.hibernate.dialect.DB2DialectDB2 AS/400org.hibernate.dialect.DB2400DialectDB2 OS390org.hibernate.dialect.DB2390DialectPostgreSQLorg.hibernate.dialect.PostgreSQLDialectMySQLorg.hibernate.dialect.MySQLDialectMySQL with InnoDBorg.hibernate.dialect.MySQLInnoDBDialectMySQL with MyISAMorg.hibernate.dialect.MySQLMyISAMDialectOracle (any version)org.hibernate.dialect.OracleDialectOracle 9i/10gorg.hibernate.dialect.Oracle9DialectSybaseorg.hibernate.dialect.SybaseDialectSybase Anywhereorg.hibernate.dialect.SybaseAnywhereDialectMicrosoft SQL Serverorg.hibernate.dialect.SQLServerDialectSAP DBorg.hibernate.dialect.SAPDBDialectInformixorg.hibernate.dialect.InformixDialectHypersonicSQLorg.hibernate.dialect.HSQLDialectIngresorg.hibernate.dialect.IngresDialectProgressorg.hibernate.dialect.ProgressDialectMckoi SQLorg.hibernate.dialect.MckoiDialectInterbaseorg.hibernate.dialect.InterbaseDialectPointbaseorg.hibernate.dialect.PointbaseDialectFrontBaseorg.hibernate.dialect.FrontbaseDialectFirebirdorg.hibernate.dialect.FirebirdDialect
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高一数学50分怎么办 在无烟房抽烟了怎么办 喂奶粉的新生儿腹部很大怎么办 剑三身份证忘了怎么办 中药剂量吃大了怎么办 社保卡3年没激活怎么办 社保卡2年没激活怎么办 cad没保存关了怎么办 cad未响应没保存怎么办 办公椅扶手坏了怎么办 玩刺客信条卡bug怎么办 我玩刺客信条1卡怎么办 玩刺客信条3卡死怎么办 mac玩刺客信条卡怎么办 阴部长了个疙瘩怎么办 两个人觉得累了怎么办 朋友把我拉黑了怎么办 下雨了怎么办我好想你 雨停怎么办我好想你 下雨天怎么办我好想你 天谕账号忘记了怎么办 天谕账号被冻结怎么办 促黄体生成素低怎么办 地暖家里太干燥怎么办 剑灵摧毁了东西怎么办 想打嗝打不出来怎么办 孩子满100天要怎么办 宝宝吃奶粉过敏了怎么办 1岁宝宝不喝奶粉怎么办 母乳不够宝宝不喝奶粉怎么办 宝宝吃奶粉上火了怎么办 我小孩不喝奶粉怎么办 2岁宝宝不喝奶粉怎么办 婴儿吃奶粉上火了怎么办 100天的宝宝咳嗽怎么办 40天的小孩咳嗽怎么办 40天的婴儿咳嗽怎么办 50天的婴儿咳嗽怎么办 宝宝20天感冒了怎么办 1个月宝宝咳嗽怎么办 40天的宝宝干咳怎么办