`
Relucent
  • 浏览: 207500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate配置项

阅读更多
	<!--Hibernate Session工厂-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="packagesToScan">
			<list>
				<value></value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
				<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
				<prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
				<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
				<prop key="hibernate.show_sql">${hibernate.use_sql_comments}</prop>
				<prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_file_resource_path}</prop>
			</props>
		</property>
	</bean>

 

hibernate.properties

#Oracle方言
# hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
# hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#hibernate方言
hibernate.dialect=org.hibernate.dialect.SQLServerDialect


#是否启用二级缓存,
hibernate.cache.use_query_cache=true
#二级缓存class
# hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider
# hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
#二级缓存配置文件
hibernate.cache.provider_configuration_file_resource_path=/cache/ehcache.xml

#是否同步数据库结构(自动创建|更新|验证数据库表结构)
#none: 不做任何操作
#create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。会导致数据库表数据丢失。
#create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
#update:第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
#validate:验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
hibernate.hbm2ddl.auto=none


#关于hibernate.jdbc.fetch_size与hibernate.jdbc.batch_size的设置,可能会将严重影响Hibernate的CRUD性能。
#设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。
#Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。
#MySQL就支持Fetch Size特性
hibernate.jdbc.fetch_size=20
#设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小。
#Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
hibernate.jdbc.batch_size=50

#设置外连接抓取树的最大深度取值. 建议设置为0到3之间
#hibernate.max_fetch_depth

#是否显示最终执行的SQL(开发环境)
hibernate.show_sql=false
#格式化显示的SQL
hibernate.format_sql=false
#如果设置为true,Hiberante将为SQL产生注释,这样更利于调试。默认值为false。取值为true|false。
hibernate.use_sql_comments=false

 

 

 

 

 

(附录) Hibernate配置项:

 

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文件中。

  

 

 

 

 

 

 

 

 

 

分享到:
评论
2 楼 f0799 2010-12-15  
很好的学习笔记,可惜自己工作学习中笔记做的都好零散···  学习的榜样!
1 楼 跳跃的心灵 2009-12-04  
我喜欢这种总结性的东西。

相关推荐

    Hibernate_Tools_for_Eclipse插件的安装和使用

    它提供了许多有用的功能,如Hibernate配置文件的创建、实体类的生成、SQL语句的生成等。下面将介绍如何安装和使用 Hibernate_Tools_for_Eclipse 插件。 一、安装 Hibernate_Tools_for_Eclipse 插件 有两种方法可以...

    Hibernate_Tools_for_eclipse_HbmTool.rar

    配置一个新的配置项,输入配置项的名称MyHibernateCode,选择Hibernate Configuration(即已配好的Hibernate控制台配置),在Output directory中输入反向代码输出目录(注意这个目录一般只需项目的源代码src),然后...

    Hibernate连接MySql的一个小实例

    Hibernate连接MySql小实例 环境:eclipse3.5 数据库:mysql 需要建立tc数据局,tc下有张user表,user表有id,name,pass项。...请在连接数据库配置文件hibernate.ctf.xml中配置用户名和密码 很容易理解的

    Hibernate注解

    很奇怪),分别是CascadeType.PERSIST(级联新建),CascadeType.REMOVE(级联删除),CascadeType.REFRESH(级联刷新),CascadeType.MERGE(级联更新),CascadeType.ALL(全部四项) * 方法一 * 主表: ?@OneToOne...

    通用查询框架(hibernate+Ajax+jstl)

    基于hibernate的开源通用查询框架: 1.支持全部hql语法 ...查询页面的查询项和列表项都是动态的,通过xml配置,统一管理。 5.安全稳定,防Sql注入攻击、session不关等问题。 6.开发快速,维护方便

    hibernate-example:该项目展示了Hibernate的基本功能

    Hibernate示例该项目展示了Hibernate的... 包含必要的Maven依赖项( pom.xml ),Hibernate配置( src/main/resources/hibernage.cfg.xml )和SessionFactory准备( src/main/java/hibernate/HibernateHelper.java )分

    hibernate实现数据库表的多种关系

    实现了一对一共享主键关联,一对多,多对一,多对多关系的单项和多项两部分的关联实现,包括源码,测试代码,配置代码,工程导入即可使用,基于hibernate4.0.

    使用Struts的Action和Hibernate来对数据库进行增、删、改、查四项操作(源码)

    &lt;br/&gt;3、访问http://localhost:8080/PaginationStrutsHibernate/即可 &lt;br/&gt;4、记得部署MySQL的JDBC驱动程序和Struts、Hibernate所需要的lib文件到%Tomcat%\webapps\PaginationStrutsHibernateWEB-INF\lib\...

    MyEclipse8.5+Spring3.0MVC+Hibernate3.3+Mysql样例

    MyEclipse8.5+Spring3.0MVC+Hibernate3.3+Mysql样例 详细讲述如何配置开发环境,如何创建样例工程,配置文件如何配置,各个配置项的意义等。 步骤详细,代码完整,方便初学者快速掌握整套开发技术,缩减学习成本。

    ssh(structs,spring,hibernate)框架中的上传下载

     由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中:  代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...

    基于hibernate 通用查询框架,包含查询、分页列表 功能

    通用查询页面中的查询项、查询出的分页列表都是自动生成的。开发简便、快速,附件中是一套完整的demo和使用说明 支持全部Hql语法格式 Awake 后续功能扩展 1.XML格式数据输出,保证了ajax用户也可以使用Awake框架...

    SpringBoot2.x之SpringDataJPA,Hibernate5

    spring.jpa前缀的相关配置项定义在JpaProperties类中,1.2自动装配类 涉及到的自动配置类包括:JpaBaseConfiguration,HibernateJpaAutoConfiguration1.3常用配置项 1.4配置项spring.jpa.database

    javahibernate源码-spring-boot-blog:用Java编写的博客源代码

    在服务器上解压缩,修改脚本文件(windows对应startup.bat,linux对应startup.sh)中的各配置项,各项说明如下: #服务器运行的端口,默认6020。如果配置为80,则可直接用http打开 ServerPort=6020 #Mysql相关的配置 #...

    Ftp在线管理系统(struts2+hibernate3+spring2+jquery实现的)

    (注:在applicationContent.xml 里配置有自动创建表结构那一项,不过已经注释了,放开就行了,用的是mysql 的数据库!文件为war包,tomcat导入直接用。)由于是本人独立做的系统,肯定存在bug,希望发现的网友帮忙...

    SHH简单集成示例

     3、对于applicationContext-common.xml和web.xml中配置项的作用进行了描述,让初学者了解每项配置的作用。  4、对于每项配置所需要的jar包在Jar文件夹中进行了分类,让大家可以了解每个jar包的作用,避免今后在...

    hibernate-sqlite-search

    Hibernate-sqlite-搜索 拉动项目。 在 eclipse 中为项目添加 gradle 性质。 运行MainApplication或gradle run 参考: 配置项详细信息

    hibernate-demo:尝试使用Hibernate

    Intellij IDEA本地mysql数据库创建Project新增项目,命名为 hibernate-demo创建目录结构 如下hibernate-demo/src/main/java/resources/test/java/resourcespom.xml依赖项配置pom.xml中配置如下依赖项&lt;dependencies&gt;...

    grails-redis-hibernate-cache:Grails 与 Redis 的集成作为 Hibernate 二级缓存的后端

    这是下载一些不在主要 maven 存储库中的依赖项所必需的。 在此之后,您可以配置 DataSource.groovy 以使用缓存: hibernate { cache . use_second_level_cache = true cache . use_query_cac

    Spring MVC 框架搭建配置方法及详解

    不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入  Spring 2.5.6:spring.jar、spring-webmvc.jar、...

Global site tag (gtag.js) - Google Analytics