Hibernate配置汇总
Hibernate配置项
![Hibernate配置项](https://img.taocdn.com/s3/m/14ec524ae45c3b3567ec8b81.png)
Xml代码1.<!--Hibernate Session工厂-->2.<bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">3.<property name="dataSource"ref="dataSource"/>4.<property name="packagesToScan">5.<list>6.<value></value>7.</list>8.</property>9.<property name="hibernateProperties">10. <props>11. <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>12. <prop key="e_query_cache">${hibere_query_cache}</prop>13. <prop key="hibernate.dialect">${hibernate.dialect}</prop>14. <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>15. <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>16. <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>17. <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>18. <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>19. <prop key="hibernate.show_sql">${e_sql_comments}</prop>20. <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.cache.provider_configuration_fil e_resource_path}</prop>21. </props>22. </property>23.</bean>hibernate.properties#Oracle方言# hibernate.dialect=org.hibernate.dialect.MySQL5Dialect# hibernate.dialect=org.hibernate.dialect.SQLServerDialect#hibernate方言hibernate.dialect=org.hibernate.dialect.SQLServerDialect#是否启用二级缓存,e_query_cache=true#二级缓存class# hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider #hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCachePr oviderhibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider#二级缓存配置文件hibernate.cache.provider_configuration_file_resource_path=/cache/ehca che.xml#是否同步数据库结构(自动创建|更新|验证数据库表结构)#none: 不做任何操作#create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。
Hibernate.cfg.xml常用配置总结
![Hibernate.cfg.xml常用配置总结](https://img.taocdn.com/s3/m/45e54c7ef5335a8102d220e7.png)
Hibernate.cfg.xml常用配置总结测试时候Hibernate有如下常用甚至更多的配置,总结如下:(1)Hibernate.show_sql:是否在运行时候sql语句输出到控制台,编码阶段便于测试的。
(默认设置为true)(2)Hibernate.format_sql:输出在控制台sql语句是否进行排版,便于阅读。
(默认设置为true)(3)Hbm2ddl.auto:可帮助由java代码生成数据库脚本,进而生成具体表结构。
如:create/update/create-drop/validate。
Create:表示每次创建新的表格,原来的表删除,同时数据全部清楚重新插入数据。
(每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
)Update:表示在原有的表上更新,保存原来的数据。
(也就是原有数据不删除,依然存在,不需要重新插入,加载hibernate自动更新数据库结构)Create-drop:加载hibernate时创建,退出是删除表结构Validate:加载hibernate时,验证创建数据库表结构,如果是不同的话则不创建表。
(4)Hibernate.default_schema:默认数据库,如果设置了,则创建表的时候,所有表有前缀。
(5)Hibernate.dialect:配置hibernate方言,可针对特定的数据库优化。
(6)1.请慎重使用此参数,没必要就不要随便用。
2.如果发现数据库表丢失,请检查hibernate.hbm2ddl.auto的配置3.以上4个属性对同一配置文件下所用有的映射表都起作用例子如下:(一)Hibernate.format_sql:输出在控制台sql语句是否进行排版,便于阅读。
(默认设置为true)(二)Hbm2ddl.auto:可帮助由java代码生成数据库脚本,进而生成具体表结构的:create:先删除,再次创建表,再插入信息。
Hibernate基本配置与操作
![Hibernate基本配置与操作](https://img.taocdn.com/s3/m/057e60d69ec3d5bbfd0a7489.png)
<property name="属性名" column="表的字段名"
type="..." length="" unique="true|false" not-null="true|false"/>
</class>
</hibernate-mapping>
4. session操作的典型代码:
Session session = ...;
Transaction tx = null;
try{
tx = session.beginTransaction();
session.save();....
mit();
Session session = factory.openSession();
☆4. Transaction:Hibernate对象底层事务的封装,默认采用手工提交事务方式,所以在进行CRUD操作时,要显示开启一个事务。
Transaction tx = session.beginTransaction();
5) update() 可以使一个脱管对象重附到新的session中, 成为持久化对象。
6) merge() 方法做合并。
传入瞬时对象,做插入。创建一个持久对象,把瞬时对象的状态复制过来,返回这个持久化对象。
传入脱管对象:先检查session缓存中有没有跟这个脱管对象的OID相同的持久化对象
<class name="实体类名" table="表名">
<id name="OID的名字" column="表的主键名" type="hibernate内置的映射类别">
hibernate_3配置文件参数汇总
![hibernate_3配置文件参数汇总](https://img.taocdn.com/s3/m/f2075825bd64783e09122bb4.png)
SQL方言1、Hibernate JDBC属性属性名用途hibernate .connection.driver_class j dbc驱动类hibernate .connection.url jdbc URLhibernate ername 数据库用户hibernate .connection.password 数据库用户密码hibernate .connection.pool_size 连接池容量上限数目注:使用C3P0的properties样例代码:hibernate .connection.driver_class = org.postgresql.Driverhibernate .connection.url = jdbc:postgresql://localhost/mydatabasehibernate ername = myuserhibernate .connection.password = secrethibernate .c3p0.min_size=5hibernate .c3p0.max_size=20hibernate .c3p0.timeout=1800hibernate .c3p0.max_statements=50hibernate .dialect = org.hibernate .dialect.PostgreSQLDialect2、Hibernate 的数据源属性属性名用途hibernate .connection.datasource 数据源JNDI名字hibernate .jndi.url JNDI提供者的URL (可选)hibernate .jndi.class JNDI InitialContextFactory 类 (可选) hibernate ername 数据库用户 (可选)hibernate .connection.password 数据库用户密码 (可选)注:应用程序服务器JNDI数据源的hibernate .properties 样例代码:hibernate .connection.datasource = java:/comp/env/jdbc/testhibernate .transaction.factory_class = \org.hibernate .transaction.JTATransactionFactoryhibernate .transaction.manager_lookup_class = \org.hibernate .transaction.JBossTransactionManagerLookuphibernate .dialect = org.hibernate .dialect.PostgreSQLDialect3、Hibernate 配置属性(可选)属性名用途hibernate .dialect一个Hibernate Dialect 类名允许Hibernate 针对特定的关系数据库生成优化的SQL.取值 full.classname.of.Dialecthibernate .show_sql输出所有SQL语句到控制台.取值 true | falsehibernate .format_sql在log和console中打印出更漂亮的sql.取值 true | falsehibernate .default_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.取值 SCHEMA_NAMEhibernate .default_catalog在生成的SQL中, 将给定的catalog附加于没全限定名的表名上.取值 CATALOG_NAMEhibernate .session_factory_nameSessionFactory 创建后,将自动使用这个名字绑定到JNDI中.取值 jndi/composite/namehibernate .max_fetch_depth 为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为将关闭默认的外连接抓取.取值建议在0 到3 之间取值hibernate .default_batch_fetch_size为Hibernate 关联的批量抓取设置默认数量.取值建议的取值为4 , 8 , 和16hibernate .default_entity_mode为由这个SessionFactory 打开的所有Session指定默认的实体表现模式.取值 dynamic-map , dom4j , pojohibernate .order_updates 强制Hibernate 按照被更新数据的主键,为SQL更新排序。
hibernate配置文件说明
![hibernate配置文件说明](https://img.taocdn.com/s3/m/719692315a8102d276a22ff7.png)
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。会导致数据库表数据丢失。
create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
(2)hibernate.show_sql打印所有的SQL语句到控制台,可以通过设置org.hibernate.SQL类的日志策略到DEBUG级,实现同样的效果。取值 true|false。
(3)hibernate.format_sql 格式化SQL语句在打印到控制台或写入日志文件时。取值true|false。
hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
# 二级缓存配置文件
#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配置大全
![hibernate配置大全](https://img.taocdn.com/s3/m/8c1ff74269eae009581bec1c.png)
<hibernate-mapping package="包名"><classs schema="数据库用户名" name="类名" table="表名"><id name="主键在java类中的字段名" column="对应表中字段" type="类型"><generator class="主键生成策略"/></id> ……</class></hibernate-mapping>1. 主键(id)Hibernate的主键生成策略有如下几种:1) assigned主键由外部程序负责生成,在save() 之前指定。
2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的Sequence,适用于支持Sequence 的数据库,如Oracle。
4) increment主键按数值顺序递增。
此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。
这种方式可能产生的问题是:不能在集群下使用。
5) identity采用数据库提供的主键生成机制。
如DB2、SQL Server、MySQL 中的主键生成机制。
6) sequence采用数据库提供的sequence 机制生成主键。
如Oralce 中的Sequence。
7) native由Hibernate 根据使用的数据库自行判断采用identity、hilo、sequence 其中一种作为主键生成方式。
8) uuid.hex由Hibernate 基于128 位UUID 算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。
hibernate配置参数
![hibernate配置参数](https://img.taocdn.com/s3/m/9bf00b48c850ad02de804156.png)
<prop key="hibernate.dbcp.ps.maxWait">1200</prop>
<prop key="hibernate.dbcp.ps.maxIdle">10</prop>
<property name="url" value="${jdbc.url}" /> //连接url,
<property name="username" value="${ername}" /> //连接用户名
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>WEB-INF/hibernate.cfg.xml</value> //hibernate配置文件位置
</prop>
<prop key="hibernate.query.factory_class"> //选择HQL解析器的实现
org.hibernate.hql.ast.ASTQueryTranslatorFactory
<property name="password" value="${jdbc.password}" /> //连接密码
Hibernate详细配置
![Hibernate详细配置](https://img.taocdn.com/s3/m/fdab652010661ed9ad51f399.png)
<property name="name" column="name"/>
2010-02-01
8
配置映射
类:
public class Card { private String id; private String serial; private Citizen citizen; }
<property name="name" column="name"/> <set name="classTbs" table="teacher_class"> <key column="teacher_id"/> <many-to-many column="CLASS_ID_MY" class="ClassTb"/> </set> </class>
2010-02-01
3
properties
Properties properties=new Properties(); properties.load(getClass().
.getClassLoader().getResourceAsStream("hib
ernate.properties")); Configuration config = new Configuration(); config.addProperties(System.getProperties()); config.addProperties(properties) SessionFactory sessionFactory = config.buildSessionFactory(); sessionFactory.openSession();
Hibernate 配置详解 (一)
![Hibernate 配置详解 (一)](https://img.taocdn.com/s3/m/aa2b0517866fb84ae45c8d5a.png)
Hibernate 配置详解(一)Hibernate的基本配置文件有两种:hibernate.cfg.xml和*.hbm.xml文件。
前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;后者包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping 节点被加载到Configuration和SessionFactory实例。
这两种文件信息包含了Hibernate的所有运行期参数。
下面我们用详细的例子来说明这两种文件的基本结构和内容。
一、hibernate.cfg.xml文件:<!--该文件的开头信息,对Hibernate而言,该类文件基本都这么开头:--> <?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- 正文开始--><hibernate-configuration><!--下面是数据库的基本连接信息,对一个应用来说,设置一个session-factory节点就够了,除非我们中间使用了多个数据库--> <session-factory><!--数据库驱动信息--><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><!--url信息--><propertyname="connection.url">jdbc:mysql://localhost:3306/webases</property><!--用户名--><property name="ername">root</property><!--密码--><property name="connection.password">274507</property><!--数据库方言信息--><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!--指定Hibernate映射文件路径--><mapping resource="com/Hibernate/test_products.hbm.xml" /></session-factory></hibernate-configuration>。
第8章 Hibernate配置
![第8章 Hibernate配置](https://img.taocdn.com/s3/m/b621151ba8114431b90dd82a.png)
③
hibernate.c3p0.max_statements=50
④
对上述标识的 4 条语句解释如下: ① 连接池中可用连接的最小数目。 ② 连接池中可用连接的最大数目。 ③ 连接池中连接允许空闲的时间,以秒为单位。当一个连接处于空闲状态超过此时间 时,此连接将会被从池中清除。 ④ 可被缓存的 PrepareStatement 实例的最大数目。 现在比较常用的是使用 XML 文档来进行配置,例如 hibernate.cfg.xml 的源码如下:
获得新连接的代价是很昂贵的。 维护许多无用的连接也是很浪费的。 因为非管理环境没有实现连接池,所以应用必须实现自己的池化算法或者依赖于第三 方类库,例如开源的 C3P0 连接池。这样在使用 Hibernate 时,程序可以直接调用连接池来 获得 JDBC 连接并执行 SQL 语句。 如果需要,可以自行提供 JDBC 连接对象给 Hibernate 使用,而无需通过配置文件设定 JDBC 来源。一个最简单的例子如下:
第 8 章 Hibernate 配置
关于 Hibernate 的配置文件分为以下两种: 实体类的映射文件(XXX.hbm.xml)。 Hibernate 基础配置文件(hibernate.cfg.xml 或 hibernate.properties)。
本章主要介绍 Hibernate 的基础配置文件的编写。Hibernate 可以配置在任何 Java 环境中 运行,一般来说,它通常被用在 2~3 层的 B/S 模式的项目中,并被部署在服务器端。在这 种项目中,Web 浏览器或 Java GUI 程序充当着客户端。尽管项目的焦点主要集中在多层 Web 应用,但实际上在一些基于命令行的应用中也可以使用 Hibernate,并且对 Hibernate 的配置在不同的环境下也不同。Hibernate 运行在两种环境下:受管理环境和不受管理环境。
Hibernate核心配置
![Hibernate核心配置](https://img.taocdn.com/s3/m/ecaa9bde0029bd64783e2cf0.png)
Hibernate核心配置1.Hibernate体系结构H ibernate位于应用程序和数据库之间,将数据库底层完全封装,应用程序只需要操作Persistent Objects(持久化对象),通过Hibernate生成SQL 语句,完成对数据表中记录的操作hibernate 支持两种核心配置文件①src/hibernate.cfg.xml (完成基本属性配置,加载hbm映射文件).<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> .<mapping resource="cn/itcast/domain/Customer.hbm.xml"/> 加载hbm映射②src/hibernate.properties (key-value文件键值对,主要配置 hibernate基本属性 ).hibernate.connection.driver_class=com.mysql.jdbc.Driver* hibernate.properties 无法加载 hbm映射,采用properties方式,必须手动编程加载 hbm文件或者持久化类2.Hibernate的常用属性①必须属性.hibernate.dialect 操作数据库方言.hibernate.connection.driver_class 连接数据库驱动程序.hibernate.connection.url 连接数据库URLername 数据库用户名.hibernate.connection.password 数据库密码②可选属性.//在控制台上输出SQL语句,hibernate 自己完成的,并没有使用日志系统,当关闭日志后,控制台仍然有SQL语句.hibernate.show_sql true..//格式化控制台输出的SQL语句*SQL 会自动换行,对于比较长的sql 查看方便.hibernate.format_sql true..hibernate.hbm2ddl.auto create/create-drop/update/validate DDL策略.* DDL 主要建表语句,和表结构更新语句.create:表示启动的时候先drop,再create (测试人员准备标准测试数据).create-drop: 也表示创建,只不过再系统关闭前执行一下drop (测试程序是否正确).update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新(建表,更新表结构【只能加】).validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新.*** 在产品开发中update 和validate 使用较多..hibernate.connection.autocommit true 事务是否自动提交.* 用于解决没有开启事务的操作时,事务如何自动处理.* 默认事务自动回滚。
Hibernate配置文件
![Hibernate配置文件](https://img.taocdn.com/s3/m/135a665be55c3b3567ec102de2bd960590c6d916.png)
Hibernate配置⽂件⼀、概述:1、Hibernate配置⽂件主要⽤于配置数据库连接和Hibernate运⾏时所需的各种属性2、每个Hibernate配置⽂件对应⼀个Cconfiguration对象3、Hibernate配置⽂件可以有两种格式:1)hibernate.properties2)hibernate.cfg.xml⼆、hibernate.cfg.xml的常⽤属性:1、JDBC连接属性:1)hibernate.connection.driver_class:数据库驱动2)hibernate.connection.url:数据库的url3)ername:数据库⽤户名4)hibernate.connection.password:数据库密码5)dialect:配置数据库的⽅⾔,根据底层的数据库不同产⽣不同的sql语句,Hibernate会针对数据库的特性在访问时进⾏优化2、C3P0数据库连接池属性:1)hibernate.c3p0.max_size:最⼤连接数2)hibernate.c3p0.min_size:最⼩连接数3)hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同⼀时刻获取多少个数据库连接4)hibernate.c3p0.timeout:连接池中连接对象在多长时间没有使⽤过后,就应该被销毁5)hibernate.c3p0.idle_test_period:表⽰连接池检测线程多长时间检测⼀次池内的所有连接对象是否超时,连接池本⾝不会把⾃⼰从连接池中移除⽽是专门有⼀个线程按照⼀定的时间间隔来做这件事,这个线程通过⽐较连接对象最后⼀次呗使⽤和当前时间的时间差来和timout做对⽐,进⽽决定是否销毁这个连接对象。
6)hibernate.c3p0.max_statements:缓存Statement对象的数量三、在hibernate.cfg.xml中配置C3P0:<property name="hibernate.c3p0.max_size">10</property><property name="hibernate.c3p0.min_size">5</property><property name="hibernate.c3p0.acquire_increment">2</property><property name="hibernate.c3p0.timeout">2000</property><property name="hibernate.c3p0.idle_test_period">2000</property><property name="hibernate.c3p0.max_statements">10</property>四、hibernate.cfg.xml的其他属性:1、show_sql:是否将运⾏时⽣成的sql语句输出到⽇志以供调试。
Hibernate配置和会话Hibernate的配置包括两个重
![Hibernate配置和会话Hibernate的配置包括两个重](https://img.taocdn.com/s3/m/a69171a1e53a580216fcfea8.png)
Java Web 程序设计与项目实践
三、使用Annotations配置映射
3.使用@Id注释实体类标识
@Id注释用来对实体类的标识进行配置,一个实体类一般只有一个 标识,所有一个实体类只出现一个@Id注释。 public class Employee { @Id private String employeeID; public String getEmployeeID() { return employeeID; } }
Java Web 程序设计与项目实践
二、配置映射文件
2.<hibernate-mapping>元素
<class>元素用来配置一个实体类与一个数据库表的关联,其中 name属性用来指定实体类的类名,table属性用来指定数据库表的名称。 <class>元素除了常用的name属性和table属性外还有其他一些常用属 性如下表所示。
Java Web 程序设计与项目实践
二、配置映射文件
1.<hibernate-mapping>元素
映射文件的根节点为<hibernate-mapping>,该节点包含一系列可 选的属性,如schema和catalog属性。其中schema属性用来指定数据库 表所在的schema名称。如果指定了schema属性,表名则会加上所指定 的schema的名字扩展为全限定名;如果没有指定该属性,则不会使用 全限定名。<hibernate-mapping>的所有属性以及属性说明如下表所示。
二、配置映射文件
5.其他元素
<class>元素下除了可以添加<id>元素和<property>元素外,还可 以添加其他元素。这些元素同样非常重要,本书将在后面的章节进行 重点介绍,这里只做简单概述。 ◆ <timestamp>元素 ◆ <version>元素 ◆ <one-to-one>元素 ◆ <many-to-one>元素 ◆ <import>元素
Hibernate主键、外键各类配置实例
![Hibernate主键、外键各类配置实例](https://img.taocdn.com/s3/m/e9f4a020dd36a32d73758149.png)
Hibernate学习1、单主键、没有外键的Hibernate配置实例<hibernate-mapping><class name="com.pms.bean.base.BadCodeBean"table="tbNC"> <id name="badCode"column="NC_ID"><generator class="assigned"/></id><property name="desc"type="string"column="NC_DESC"></property> </class></hibernate-mapping>2、单主键、有外键的Hibernate配置实例<hibernate-mapping><class name="com.pms.bean.base.ProjectBean"table="tbProject"> <id name="prjname"column="PRJ_NAME"type="string"><generator class="assigned"></generator></id><many-to-one name=”customerCode”class=”com.pms.bean.base.CustomerBean”outer-join=”ture”not-null=”true”lazy=”false”><column name=”PRJ_CU_CODE”></column></many-to-one></hibernate-mapping>3、双主键、没有外键的Hibernate配置实例<hibernate-mapping><class name="com.pms.bean.base.LocationBean"table="tbLocation"> <composite-id><key-property name="lgort"column="LO_LGORT" type="string"><key-property name="werks"column="LO_WERKS" type="string"> </composite-id></class></hibernate-mapping>4、双主键、有外键的Hibernate配置实例<hibernate-mapping><class name="com.pms.bean.base.DepartNcBean"table="tbNCDept"> <composite-id><key-property name="ncBean"column="NCD_ID " lazy="false"><key-property name="deptDialogBean"column="NCD_DeptID "lazy="false"></composite-id><many-to-one name=”badType”class=”com.pms.bean.base.BadTypeBean”outer-join=”ture”not-null=”true”lazy=”false”><column name=”NCD_BadTypeCode”></column></many-to-one></class></hibernate-mapping>5、双主键中的两个主键都被作为外键被调用的Hibernate配置实例详细举例讲解:例如工厂和生产调度员组合成双主键,现在有一个表里面有两个外键分别是工厂和生产调度员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate3的配置参数汇总2009年09月05日星期六 14:57SQL方言1、Hibernate JDBC属性属性名用途hibernate.connection.driver_class jdbc 驱动类hibernate.connection.url jdbc URL ername 数据库用户hibernate.connection.password 数据库用户密码hibernate.connection.pool_size 连接池容量上限数目注:使用C3P0的properties样例代码:hibernate.connection.driver_class = org.postgresql.Driver hibernate.connection.url = jdbc:postgresql://localhost/mydatabase ername = myuserhibernate.connection.password = secrethibernate.c3p0.min_size=5hibernate.c3p0.max_size=20hibernate.c3p0.timeout=1800hibernate.c3p0.max_statements=50hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect2、Hibernate的数据源属性属性名用途hibernate.connection.datasource 数据源JNDI名字hibernate.jndi.urlJNDI提供者的URL (可选)hibernate.jndi.class J NDI InitialContextFactory类 (可选)ername 数据库用户 (可选) hibernate.connection.password 数据库用户密码 (可选)注:应用程序服务器JNDI数据源的hibernate.properties样例代码:hibernate.connection.datasource = java:/comp/env/jdbc/test hibernate.transaction.factory_class = \org.hibernate.transaction.JTATransactionFactoryhibernate.transaction.manager_lookup_class = \org.hibernate.transaction.JBossTransactionManagerLookuphibernate.dialect = org.hibernate.dialect.PostgreSQLDialect3、Hibernate配置属性(可选)属性名用途hibernate.dialect一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.取值full.classname.of.Dialecthibernate.show_sql输出所有SQL语句到控制台.取值true | falsehibernate.format_sql在log和console中打印出更漂亮的sql.取值true | falsehibernate.default_schema在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.取值SCHEMA_NAMEhibernate.default_catalog在生成的SQL中, 将给定的catalog附加于没全限定名的表名上.取值CATALOG_NAMEhibernate.session_factory_nameSessionFactory创建后,将自动使用这个名字绑定到JNDI中.取值jndi/composite/namehibernate.max_fetch_depth为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取.取值建议在0到3之间取值hibernate.default_batch_fetch_size为Hibernate关联的批量抓取设置默认数量.取值建议的取值为4, 8, 和16hibernate.default_entity_mode为由这个SessionFactory打开的所有Session指定默认的实体表现模式.取值dynamic-map, dom4j, pojohibernate.order_updates强制Hibernate按照被更新数据的主键,为SQL更新排序。
这么做将减少在高并发系统中事务的死锁。
取值true | falsehibernate.generate_statistics如果开启, Hibernate将收集有助于性能调节的统计数据.取值true | falsee_identifer_rollback如果开启, 在对象被删除时生成的标识属性将被重设为默认值.取值true | falsee_sql_comments如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为false.取值true | false4、Hibernate JDBC和连接(connection)属性属性名用途hibernate.jdbc.fetch_size非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()).hibernate.jdbc.batch_size非零值,允许Hibernate使用JDBC2的批量更新.取值建议取5到30之间的值hibernate.jdbc.batch_versioned_data如果你想让你的JDBC驱动从executeBatch()返回正确的行计数 , 那么将此属性设为true(开启这个选项通常是安全的). 同时,Hibernate将为自动版本化的数据使用批量DML. 默认值为false.eg.true | falsehibernate.jdbc.factory_class选择一个自定义的Batcher. 多数应用程序不需要这个配置属性.eg.classname.of.Batchere_scrollable_resultset允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时,这个选项才是必要的, 否则Hibernate会使用连接的元数据.取值true | falsee_streams_for_binary在JDBC读写binary (二进制)或serializable (可序列化) 的类型时使用流(stream)(系统级属性).取值true | falsee_get_generated_keys在数据插入数据库之后,允许使用JDBC3PreparedStatement.getGeneratedKeys() 来获取数据库生成的key(键)。
需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标识生成器时遇到问题,请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力.取值true|falsehibernate.connection.provider_class自定义ConnectionProvider的类名, 此类用来向Hibernate提供JDBC连接.取值classname.of.ConnectionProviderhibernate.connection.isolation设置JDBC事务隔离级别. 查看java.sql.Connection来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别.取值1, 2, 4, 8hibernate.connection.autocommit允许被缓存的JDBC连接开启自动提交(autocommit) (不建议).取值true | falsehibernate.connection.release_mode指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.取值on_close | after_transaction | after_statement | autohibernate.connection.<propertyName>将JDBC属性propertyName传递到DriverManager.getConnection()中去.hibernate.jndi.<propertyName>将属性propertyName传递到JNDI InitialContextFactory中去.5、Hibernate缓存属性属性名用途hibernate.cache.provider_class自定义的CacheProvider的类名.取值classname.of.CacheProvidere_minimal_puts以频繁的读操作为代价, 优化二级缓存来最小化写操作. 在Hibernate3中,这个设置对的集群缓存非常有用, 对集群缓存的实现而言,默认是开启的.取值true|falsee_query_cache允许查询缓存, 个别查询仍然需要被设置为可缓存的.取值true|falsee_second_level_cache能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<cache>的类,会默认开启二级缓存.取值true|falsehibernate.cache.query_cache_factory自定义的实现QueryCache接口的类名, 默认为内建的StandardQueryCache.取值classname.of.QueryCachehibernate.cache.region_prefix二级缓存区域名的前缀.取值prefixe_structured_entries强制Hibernate以更人性化的格式将数据存入二级缓存.取值true|false6、Hibernate事务属性属性名用途hibernate.transaction.factory_class一个TransactionFactory的类名, 用于Hibernate Transaction API (默认为JDBCTransactionFactory).取值classname.of.TransactionFactoryerTransaction一个JNDI名字,被JTATransactionFactory用来从应用服务器获取JTA UserTransaction.取值jndi/composite/namehibernate.transaction.manager_lookup_class一个TransactionManagerLookup的类名 - 当使用JVM级缓存,或在JTA环境中使用hilo生成器的时候需要该类.取值classname.of.TransactionManagerLookuphibernate.transaction.flush_before_completion如果开启, session在事务完成后将被自动清洗(flush). (在Hibernate和CMT 一起使用时很有用.)取值true | falsehibernate.transaction.auto_close_session如果开启, session在事务完成前将被自动关闭. (在Hibernate和CMT一起使用时很有用.)取值true | false7、其他属性属性名用途hibernate.query.factory_class选择HQL解析器的实现.取值org.hibernate.hql.ast.ASTQueryTranslatorFactory ororg.hibernate.hql.classic.ClassicQueryTranslatorFactoryhibernate.query.substitutions将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字).取值hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNChibernate.hbm2ddl.auto在SessionFactory创建时,自动将数据库schema的DDL导出到数据库. 使用create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.取值update | create | create-drope_reflection_optimizer开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在hibernate.cfg.xml中设置此属性.取值true | false8、SQL方言Hibernate SQL方言 (hibernate.dialect)RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400org.hibernate.dialect.DB2400DialectDB2 OS390 org.hibernate.dialect.DB2390DialectPostgreSQL org.hibernate.dialect.PostgreSQLDialectMySQL org.hibernate.dialect.MySQLDialectMySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialectMySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialectoracle (any version) org.hibernate.dialect.OracleDialectoracle 9i/10g org.hibernate.dialect.Oracle9DialectSybase org.hibernate.dialect.SybaseDialectSybase Anywhere org.hibernate.dialect.SybaseAnywhereDialectMicrosoft SQL Server org.hibernate.dialect.SQLServerDialectSAP DB org.hibernate.dialect.SAPDBDialectInformix rmixDialectHypersonicSQL org.hibernate.dialect.HSQLDialectIngres org.hibernate.dialect.IngresDialectProgress org.hibernate.dialect.ProgressDialectMckoi SQL org.hibernate.dialect.MckoiDialectInterbase org.hibernate.dialect.InterbaseDialectPointbase org.hibernate.dialect.PointbaseDialectFrontBase org.hibernate.dialect.FrontbaseDialectFirebird org.hibernate.dialect.FirebirdDialect9、Hibernate日志类别类别功能org.hibernate.SQL在所有SQL DML语句被执行时为它们记录日志org.hibernate.type为所有JDBC参数记录日志org.hibernate.tool.hbm2ddl在所有SQL DDL语句执行时为它们记录日志org.hibernate.pretty在session清洗(flush)时,为所有与其关联的实体(最多20个)的状态记录日志org.hibernate.cache为所有二级缓存的活动记录日志org.hibernate.transaction为事务相关的活动记录日志org.hibernate.jdbc为所有JDBC资源的获取记录日志org.hibernate.hql.ast为HQL和SQL的自动状态转换和其他关于查询解析的信息记录日志org.hibernate.secure为JAAS认证请求做日志org.hibernate为任何Hibernate相关信息做日志 (信息量较大, 但对查错非常有帮助)。