Hibernate配置总结
2015-10-09 22:01
267 查看
Hibernate.cfg.xml主配置文件配置:
1、配置数据库的信息:包括数据库方言、数据库URL、数据库驱动、用户名、密码
(1)是否显示SQL语句:
其中"show_sql"为true表示显示SQL语句,为false表示不显示SQL语句,"format_sql"为true表示格式化显示的SQL语句,为 false表示不格式化显示的SQL语句。
其中可选的值有:
a、create:先删除,再创建
b、update:如果表不存在就创建,不一样就更新,一样就什么都不做
c、create-drop:初始化时创建表,SessionFactory执行close()时删除表
d、validate:验证表结构是否一致,如果不一致,就抛异常
1表示读操作未提交,2表示读操作已提交,4表示可重复读,8表示可串行化
二级缓存默认是未打开的,所以要使用二级缓存,就要如下配置。第2-4行配置的是缓存的提供商,如果要使用更高级的缓存提供商,那么可以查阅Hibernate文档,并导入相应的包。第7行配置的是查询缓存的开关,表示当使用hql语句进行查询的时候,是否将查询结果保存到二级缓存中。第10-11行配置的是指定要使用二级缓存的实体类,"read-only"表示只读,如果既要读也要写的话,可以使用"read-write"。第14行配置的是集合缓存,表示当通过一个对象中的集合属性找到另一个与之关联的对象是,也要保存到二级缓存。
关联关系映射文件配置:
1、一对多:
name表示该实体类中关联其他表的那个属性名称;table表示关联的表名称;inverse属性默认为false表示本方维护关联关系,如果为true表示本方不维护关联关系。只是影响是否能设置外键列的值(设成有效值或是null值),对获取信息没有影响。cascade属性默认为none,表示不级联,可设置为:delete,save-update,all,none 。key元素中column表示本类关联的那个表中的外键列。one-to-many
中的class表示本类关联那个实体的类型,即类名。
2、多对一:
name属性表示本类存在的关联的变量名;class属性表示关联的实体类型;column属性表示外键列,引用了关联对象的表的主键。
3、多对多:
table属性表示中间表,填写表名;key子元素中的column表示集合外键,引用当前表主键的那个外键;many-to-many中的class表示关联的那个实体的类型,即类名,column表示中间表引用关联表的的主键。
4、一对一(采用独立外键):
有外键方:与多对已关系一致,加上unique="true"表示外键唯一性。
有外键方:主键生成策略一定为foreign,参数property生成主键值时所根据的对象。constrained属性设置为true
无外键方:name表示本类中有关联关系的属性,class表示关联关系的类型
1、配置数据库的信息:包括数据库方言、数据库URL、数据库驱动、用户名、密码
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <property name="connection.url"> jdbc:oracle:thin:@localhost:1521:orcl </property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="connection.username">xxx</property> <property name="connection.password">xxx123</property>2、其他配置:
(1)是否显示SQL语句:
其中"show_sql"为true表示显示SQL语句,为false表示不显示SQL语句,"format_sql"为true表示格式化显示的SQL语句,为 false表示不格式化显示的SQL语句。
<property name="show_sql">true</property> <property name="format_sql">true</property>(2)配置是否自动建表:
其中可选的值有:
a、create:先删除,再创建
b、update:如果表不存在就创建,不一样就更新,一样就什么都不做
c、create-drop:初始化时创建表,SessionFactory执行close()时删除表
d、validate:验证表结构是否一致,如果不一致,就抛异常
<property name="hbm2ddl.auto">update</property>(3)配置事务隔离级别:
1表示读操作未提交,2表示读操作已提交,4表示可重复读,8表示可串行化
<property name="connection.isolation">2</property>(4)数据库连接池配置(c3p0):
<!-- 使用c3p0连接池 配置连接池提供的供应商 --> <property name="connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </property> <!-- 在连接池中可用的数据库连接最少数目 --> <property name="hibernate.c3p0.min_size">5</property> <!-- 在连接池中所有数据库连接的最大数目 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 设定数据库连接的过期时间,以秒为单位, 如果连接池中的某个数据库连接处于空闲状态超过了timeout时间,就会从连接池中清除 --> <property name="hibernate.c3p0.timeout">120</property> <!-- 每3000秒检查所有连接池中的空闲连接,以秒为单位 --> <property name="hibernate.c3p0.idle_test_period">3000</property>(5)二级缓存配置:
二级缓存默认是未打开的,所以要使用二级缓存,就要如下配置。第2-4行配置的是缓存的提供商,如果要使用更高级的缓存提供商,那么可以查阅Hibernate文档,并导入相应的包。第7行配置的是查询缓存的开关,表示当使用hql语句进行查询的时候,是否将查询结果保存到二级缓存中。第10-11行配置的是指定要使用二级缓存的实体类,"read-only"表示只读,如果既要读也要写的话,可以使用"read-write"。第14行配置的是集合缓存,表示当通过一个对象中的集合属性找到另一个与之关联的对象是,也要保存到二级缓存。
<!-- 指定要使用的缓存的提供商,这也就打开了二级缓存 --> <property name="cache.provider_class"> org.hibernate.cache.HashtableCacheProvider </property> <!-- 查询缓存开关,true开启使用查询缓存--> <property name="cache.use_query_cache">true</property> <!-- 指定要使用二级缓存的实体类 --> <class-cache usage="read-only" class="edu.fjnu.l_hbm_second_cache.Department"/> <class-cache usage="read-only" class="edu.fjnu.l_hbm_second_cache.Employee"/> <!-- 集合缓存 --> <collection-cache usage="read-only" collection="edu.fjnu.l_hbm_second_cache.Department.employees"/>(6)导入映射文件:把所有实体类对应的*.hbm.xml文件都导入到主配置文件中,注意映射文件地址的书写方式
<mapping resource="edu/fjnu/domain/User.hbm.xml"/>
关联关系映射文件配置:
1、一对多:
name表示该实体类中关联其他表的那个属性名称;table表示关联的表名称;inverse属性默认为false表示本方维护关联关系,如果为true表示本方不维护关联关系。只是影响是否能设置外键列的值(设成有效值或是null值),对获取信息没有影响。cascade属性默认为none,表示不级联,可设置为:delete,save-update,all,none 。key元素中column表示本类关联的那个表中的外键列。one-to-many
中的class表示本类关联那个实体的类型,即类名。
<set name="" table="" inverse="" cascade=""> <key column=""></key> <one-to-many class=""/> </set>
2、多对一:
name属性表示本类存在的关联的变量名;class属性表示关联的实体类型;column属性表示外键列,引用了关联对象的表的主键。
<many-to-one name="" class="" column=""></many-to-one>
3、多对多:
table属性表示中间表,填写表名;key子元素中的column表示集合外键,引用当前表主键的那个外键;many-to-many中的class表示关联的那个实体的类型,即类名,column表示中间表引用关联表的的主键。
<set name="" table=""> <key column=""></key> <many-to-many class="" column=""></many-to-many> </set>
4、一对一(采用独立外键):
有外键方:与多对已关系一致,加上unique="true"表示外键唯一性。
<many-to-one name="" class="" column="" unique="true"></many-to-one>无外键方:property-ref属性,写的是对方映射中外键列对应的类属性名。
<one-to-one name="" class="" property-ref=""></one-to-one>5、一对一(一方主键作为外键):
有外键方:主键生成策略一定为foreign,参数property生成主键值时所根据的对象。constrained属性设置为true
<id name="id" type="java.lang.Integer" column="id"> <generator class="foreign"> <param name="property"></param> </generator> </id> <one-to-one ="" class="" constrained="true"></one-to-one>
无外键方:name表示本类中有关联关系的属性,class表示关联关系的类型
<one-to-one name="" class=""></one-to-one>
相关文章推荐
- Eclipse添加xml文件提示及Hibernate配置学习
- hibernate初学之初解篇一
- 关于hibernate.cfg.xml头文件DTD的引入
- hibernate的简单配置实例
- 非主键字段外键Hibernate配置
- Hibernate基本示例
- Hibernate环境搭建和配置
- hibernate 3.1使用(import org.hibernate.cfg.AnnotationConfiguration;)出错
- Hibernate第一个程序流程(2016-3-20)
- hibernate_核心配置和映射配置
- Hibernate(一)
- 框架之Hibernate01
- 如何配置hibernate框架
- Hibernate配置01
- MyEclipse配置Hibernate
- Spark1.0.2 Standalone 模式部署
- [数论]矩阵快速幂
- 异常 集中异步处理
- Linux基础学习2
- Gearman任务分布系统部署windows平台_使用Cygwin