Hibernate文档笔记共分为三个部分,此处是第三部分,重点讲述了可选配置项,它包括Hibernate配置项、Hibernate JDBC和连接的属性、Hibernate Cache 属性、Hibernate事务属性和Miscellaneous properties 各种混合的属性。
AD: 51CTO云计算架构师峰会 抢票进行中!

Hibernate文档笔记共分为三个部分,此处是第三部分,重点讲述了可选配置项,它包括Hibernate配置项、Hibernate JDBC和连接的属性、Hibernate Cache 属性、Hibernate事务属性和Miscellaneous properties 各种混合的属性。
九、可选配置项
下面介绍的Hibernate属性,有一些是系统级别的。系统级别的属性只能通过-Dproperty=value来设置或在hibernate.properties文件中设置,不能使用上面的方式设置。
1.Hibernate配置项
(1)hibernate.dialect指定方言后,Hibernate可以根据低层数据库自动产生优化过的SQL。取值为org.hibenate.dialect.Dialect的继承类。多数情况下,Hibernate可以根据低层JDBC返回的metadata来判断。
(2)hibernate.show_sql打印所有的SQL语句到控制台,可以通过设置org.hibernate.SQL类的日志策略到DEBUG级,实现同样的效果。取值true|false。
(3)hibernate.format_sql 格式化SQL语句在打印到控制台或写入日志文件时。取值true|false。
(4)hibernate.default_schema 在产生SQL语句时,在表名前加上映射文件给出的表空间(tablespace)或数据库模式(schema)。取值SCHEMA_NAME。
(5)hibernate.default_catalog 在产生SQL语句时,在表名前加上映射文件给出的catalog。取值CATALOG_NAME。
(6)hibernate.session_factory_name Hibernate创建org.hibernate.SessionFactory实例后后会自动的将这个绑定到JNDI中的名字上。取值jndi/sf。
(7)hibernate.max_fetch_depth 设置对单个表的外连接数最大深度。0是屏蔽默认的外连接设置。推荐设置为0到3之间。
(8)hibernate.default_batch_fetch_size 设置Hibernate批量联合查询的尺度。强烈建议。推荐设置为4、8、16。
(9)hibernate.default_entity_mode 默认的实体表现模式,通过SessionFactory打开的所有的Session。取值,dynamic-map、dom4j、pojo。
(10)hibernate.order_updates 强迫Hibernate通过被更新项的主键值排序SQL更新。这样可以在高并发时,减少事务死锁。取值true|false。
(11)hibernate.generate_statistics 如果设置为true,Hibernate将为性能调整,收集统计信息。取值true|false。
(12)hibernate.use_identifier_rollback 如果设置为true,产生的标识属性将被重置成默认值,当对象被删除后。取值为true|false。
(13)hibernate.use_sql_comments 如果设置为true,Hiberante将为SQL产生注释,这样更利于调试。默认值为false。取值为true|false。
2.Hibernate JDBC和连接的属性
(1)hibernate.jdbc.fetch_size 指定JDBC的查询尺度。通过调用(Statement.setFetchSize())。
(2)hibernate.jdbc.batch_size 指定Hibernate如何使用JDBC2批量更新。取值,推荐5到30。
(3)hibernate.jdbc.batch_versioned_data 设置这个属性为true,JDBC将返回executeBatch执行后正确的行数。打开这个参数,通常是安全的。Hibernate将自动的译码这些数据使用批量DML。默认为false。取值true|false。
(4)hibernate.jdbc.factory_class 选择一个定制的org.hibernate.jdbc.Batcher。所有的应用程序不需要配置这个属性。取值,定义工厂的类名。
(5)hibernate.jdbc.use_scrollable_resultset Hibernate使用JDBC2的可滚动记录集。当使用用户提供的JDBC连接时,需要设置这个参数。否则,Hibernate使用连接MetaData。取值true|false。
(6)hibernate.jdbc.use_streams_for_binary 当读或写二进制数据或序列化数据从JDBC或到JDBC,使用流。系统级的数据。设置true|false。
(7)hibernate.jdbc.use_get_generated_keys 在插入后,可以使用JDBC3的PreparedStatement.getGeneratedKeys()中的值找回本地产生的键值。要求JDBC3+和JRE1.4+,如果使用Hibernate identifier generator后你的驱动程序有问题,请设置为false。默认情况下,设法连接MetaData来决定。取值,true|false。
(8)hibernate.connection.provider_class 实现了org.hibernate.connection.ConnectionProvider 接口的类的名称,为Hibernate提供连接。
(9)hibernate.connection.isolation 设置JDBC事务隔离的级别。检查java.sql.Connection的定义的常量值,但要注意大多数数据库不支持所有的隔离级别、一些附加的和非标准的隔离级别。取值,1、2、4、8。
(10)hibernate.connection.autocommit JDBC共享连接的自动提交。(不推荐)取值,true|false。
(11)hibernate.connection.release_mode 指定什么时候,Hibernate应该释放JDBC连接。默认情况下,JDBC是一直存在,只到Session是被明确关闭或断开连接时。对于应用的服务器JTA数据源,你应该使用after_statement强制释放JDBC连接在每个JDBC请求结束后。对于非JTA数据源,通常是在每个事务结束后释放JDBC连接是有意义的。将该值设为auto时,JTA和CMT事务策略时,是选择after_statement方式。JDBC事务策略时,是选择after_transaction。取值,auto(default),on_close,after_statment,after_transaction。
注意:这个设置只影响通过SessionFactory.openSession打开的session。对于通过SessionFactory.getCurrentSession获取的session,CurrentSessionContext实现类的配置是用来控制这些session的连接释放模式。
(12)hibernate.connection. 传递这些属性到DriverManager.getConnection中。
(13)hibernate.jndi. 传递这些属性到JNDI InitialContextFactory。
3.Hibernate Cache 属性
(1)hibernate.cache.provider_class 定制的CacheProvider的类名。
(2)hibernate.cache.use_minimal_puts 花费更多的读操作,来优化二级缓存的最少写操作。这个操作对于集群缓存是非常有用的。在Hibernate3中,对于集群缓存是默认开启该功能的。取值,true|false。
(3)hibernate.cache.use_query_cache 开启查询缓存,个别查询肯定应该开启查询缓存。取值,true|false。
(4)hibernate.cache.use_second_level_cache 也许过去习惯于完全屏蔽掉二级缓存,默认是开启,对于指定CacheProvider实现类的情况。取值,true|false。
(5)hibernate.cache.query_cache_factory 实现QueryCache接口的类名,默认是内置的StandardQueryCache。
(6)hibernate.cache.region_prefix 对于使用二级缓存区域名的前缀。
(7)hibernate.cache.use_structured_entries 强迫Hibernate在存储数据到二级缓存时,使用更人性化的格式。取值,true|false。
4.Hibernate事务属性
(1)hibernate.transaction.transaction_class 使用Hibernate事务APIs的TransactionFactory的类名。默认是JDBCTransactionFactory。
(2)jta.UserTransaction JTATransactionFactory使用JNDI名字从应用服务器中获取JTA UserTransaction。取值,jndi/ut。
(3)hibernate.transaction.manager_lookup_class 是一个TransactionManagerLookup实现类的类名。当JVM级别的缓存开启时或在JTA环境中使用hilo generator时,要求指定该值。
(4)hibernate.transaction.flush_before_completion 如果设为true,session将在事务完成阶段之前,自动将缓存区的值推入到数据库中。内置和自动session上下文管理是被优先选用的。取值,true|false。
(5)hibernate.transaction.auto_close_session 如果设为true,session将在事务完成之后,自动的关闭session。内置和自动session上下文管理是被优先选用的。取值,true|false。
5.Miscellaneous properties 各种混合的属性
(1)hibernate.current_session_context_class 提供一个对于当前session生命周期的策略。取值,jta、thread、managed、定制类名。
(2)hibernate.query.factory_class 选择HSQL的解析实现类。取值,org.hibernate.hsql.ast.ASTQueryTranslatorFactory和org.hibernate.hsql.classic.ClassicQueryTranslatorFactory。
(3)hibernate.query.subsitutions Hibernate中标记符到SQL中标记符的映射。举例说,可以是函数名或普通字符串名。取值,如hsqLiteral=SQL_LITERAL,hqlFunction=SQLFUN。
(4)hibernate.hbm2ddl.auto 当SessionFactory被创建时,自动的验证或输出模式DDL(也就建表语句)到数据库中。也就是说,自动的验证数据库表结构或先删除再重新建立,或在原表结构上更新数据表结构。当将值置为create-drop时,在SessionFactory被清除时,将删除数据库中表结构。取值,validate、create、update、create-drop。
(5)hibernate.cglib.use_reflection_optimizer 用CGLIB代替运行期的reflection(系统级属性)。在有故障时,反射是非常有用的,注意Hibernate总是需要CGLIB,甚至在你关闭优化后。你不可以设置这个属性在hibernate.cfg.xml文件中。

Hibernate文档笔记 Hibernate

0

分享

微博 QQ 微信

收藏

上一篇:强人Hibernate文档笔记(... 下一篇:十五道Hibernate面试题及...
wulianghuan

191篇文章,41W+人气,1粉丝

关注

转载于:https://blog.51cto.com/mrwlh/971495

强人Hibernate文档笔记(下)相关推荐

  1. hibernate文档

    hibernate文档 1.求总条数,getSession.createQuery(hql).setString("name",name).setString(0,age).set ...

  2. HOOMD Blue 文档笔记

    HOOMD Blue文档笔记 基于hoomd 1.0.2 userdoc http://codeblue.umich.edu/hoomd-blue/doc/index.html 3. 快速开始 例程: ...

  3. 文档笔记----nodejs菜鸟教程

    <html><head><meta charset="utf-8"><title>文档笔记----nodejs菜鸟教程</ti ...

  4. Vue官网2文档笔记

    文章目录 $event $on Class 与 Style 绑定 对象语法 列表渲染 v-for 中使用对象 事件处理 事件修饰符 插槽 具名插槽 解构插槽 prop 动态组件&异步组件 访问 ...

  5. ie7文档模式下:被呼叫方(服务器[不是服务器应用程序])不可用并已消失。所有连接均无效。没有执行呼叫。

    ie7文档模式下:被呼叫方(服务器[不是服务器应用程序])不可用并已消失.所有连接均无效.没有执行呼叫.

  6. NE40E华为产品文档-----笔记(2022.9.28)

    ** NE40E华为产品文档-----笔记(2022.9.28) ** P34开始 全连接full Mesh 中文解释:全网状 英文来历:Full Mesh表示网络的一种连接形式,即所有结点之间都直接 ...

  7. 这几款文档笔记工具,你习惯用哪个?

    前言 俗话说的好:"好记性不如烂笔头",平时工作记录笔记的确是一个良好的习惯,做文档笔记可以在我们遗忘时进行回看,方便查找,代替人的大脑.有时程序写多了,很不愿意去强制记忆一些东西 ...

  8. 文档 笔记 我全都要

    不知道你在平时工作或学习中,会不会经常写文档.记笔记 ~~ 笔者建议大家试着多写写文档 多记记笔记.把自己工作学习中遇到的问题,解决的方法都记录下来,别人写的好的文章也可以保存一下.长期下来 你会发现 ...

  9. html5教学文档笔记,4.HTML 教程- (HTML5 基础)

    HTML 教程- (HTML5 基础) 1.HTML 标题 HTML 标题(Heading)是通过 - 标签来定义的. 2.HTML 段落 HTML 段落是通过标签 来定义的. 3.HTML 链接 H ...

  10. 华为技术官又出神作,鸿蒙操作系统完整文档笔记现已疯传

    操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,用户和计算机的接口,同时也是计算机硬件和其他软件的接口. 其能管理计算机系统的硬件.软件及数据资源, ...

最新文章

  1. 自然语言处理十问!独家福利
  2. 【分析总结】ASP.NET中的状态管理原理
  3. springBoot 项目 jar/war打包 并运行
  4. 键盘改键软件_一秒五键,一键三招,万种光污染,杜伽K310樱桃轴机械键盘感受...
  5. 限制input 内部字数
  6. [vue-element]有阅读过ElementUI的源码吗?
  7. android jackson 解析json字符串,一文搞定Jackson解析JSON数据
  8. horizontalscrollview+textview简单版
  9. 原神九宫格拼图游戏ES6+bootstrap+cookie
  10. 8、ESP8266 深度睡眠
  11. 【Kubernetes】Pod学习(五)从Pod到容器:Downward API
  12. 游戏进化之路,Metaverse 的特征及难题
  13. 10分钟教你用 Python 控制键盘和鼠标
  14. mysql connector详解_MySQL Connector 编程
  15. Blender学习记录
  16. python使用pandas打不开excel文件
  17. 高效办公之超好用的流程图工具
  18. 局域网内计算机时间同步
  19. CSDN学院免费课程领取教程
  20. 程序员35岁职业危机

热门文章

  1. springboot允许跨域注解_springboot 设置允许跨域的方法
  2. android期末课设选题_Android课程设计报告书.doc
  3. HDU 1394 Minimum Inversion Number(线段树求逆序对)
  4. C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件
  5. 不要犹豫 了解这些即可玩转阿里云ODPS
  6. iOS开发-Bug锦囊
  7. win8下hosts保存文档失败,提示:请检查文件是否被另一个应用程序打开
  8. 以前积攒的一个用Java程序生成验证码的代码
  9. UCHOME出现问题(转帖)
  10. [转]简单批处理内部命令简介