Hibernate
文章平均质量分 83
iteye_4130
这个作者很懒,什么都没留下…
展开
-
初学Hibernate(一)
Hibernate 简单开发步骤: 1 、准备工作:引入 Hibernate 包及其依赖包和 jdbc 驱动包,并在 Hibernate 文件中的project/etc 下,拷贝log4j.properties 放到项目类路径中 2 、创建实体类 : 实体类一般指的是只有 attrbute 和 property 的 java 类,并且...原创 2010-11-11 20:59:13 · 76 阅读 · 0 评论 -
一对多双向关联及inverse和cascade属性
单向多对一关联映射:many-to-one: 1、 所谓的关联就是对象和对象之间在某段时间范围内(是可以持续一段时间的),存在有联系,即关联可以在一开始不存在,后来才建立起来,然后还可以取消和改变如:通过对象A.setB(对象B)建立或更新关联--通过A.setB(null)取消关联 2、 判断关联的多重性:首先站在任何一端的某一个对象的角度判断跟对方那端的多少个对象有联系,...原创 2010-11-12 00:07:37 · 173 阅读 · 0 评论 -
Hibernate多对多关联映射通常别拆分成两个多对一关联映射
Hibernate多对多关联映射通常别拆分成两个多对一关联映射 1、 下面的Person、Role、PersonRole,PersonRole是两个表之间的关联表,分别跟Person和Role都是多对一的关联关系,可以发现中间表始终是多的一端。 2、因此配置文件中是这样的,在中间表PersonRole中 分别设置中间表的两个关联字段;在另外本身是多对多关联的两个表中 ...原创 2010-11-12 22:20:58 · 179 阅读 · 0 评论 -
Hibernate缓存策略之一级缓存
缓存相当于Map结构,讲的是命中率,就像Entryset中的key和Value。 Hibernate中的缓存: 一级缓存,也叫session级别的缓存,缓存的是实体 二级缓存,是SessionFactory级别的缓存,缓存的也是实体 查询缓存,也是SessionFactory级别的缓存,它缓存的是普通结果集,但如果缓存的是实体则缓存实体的Id列表 session级别的缓存...原创 2010-11-21 21:43:14 · 103 阅读 · 0 评论 -
Hibernate缓存策略之1+N(一)
一级缓存中的1+N问题 所谓1+N指的就是:一条查询实体对象的ID列表的查询语句和迭代查询具体的多个实体对象的查询语句 session的load/get或iterate操作会利用缓存,如果缓存中已有实体对象,将不再发出查询语句查询实体对象 session的list操作将不会利用缓存,每次查询,都会发出查询语句 如果查询实体对象,则list操作直接发查询语句把实体对象加载到...原创 2010-11-21 22:31:12 · 126 阅读 · 0 评论 -
Hibernate缓存策略之二级缓存
一级缓存,即session级缓存,是最最重要的,因为它不能够被取消,现在看看二级缓存. Hibernate二级缓存不是由本身维护的,它是由第三发缓存框架来提供的。看一下如何使用二级缓存: 1、首先要打开二级缓存 <!-- 配置打开二级缓存 --> <property name="hibernate.cache.use_second_level_cache">...原创 2010-11-21 23:49:09 · 81 阅读 · 0 评论 -
Hibernate悲观锁与乐观锁
假如有两个客户端或者说是两个事务同时去修改同一条数据,就会产生并发的现象,这时候有数据的更新丢失。现在就来模拟下这个并发现象的例子: 客户端 1 或者说是事务 1 : session.beginTransaction(); Person p = (Person)session.load(Person.class, 1); //Person p = (Person)...原创 2010-12-19 13:47:17 · 54 阅读 · 0 评论 -
Hibernate缓存策略之查询缓存
查询缓存: 首先明确查询缓存缓存的是什么?缓存的 key 是 HQL 语句与参数,缓存的 value 则是: 1、 如果查询的是普通结果集,则缓存这些结果集 2、 如果查询的是实体对象,则缓存的是实体对象的 ID 列表 3、 查询缓存它也是 SessionFactory 级别的缓存,由 sessionFa...原创 2010-12-20 11:12:51 · 79 阅读 · 0 评论 -
Hibernate查询缓存中的1+N
查询缓存查找实体对象: session.beginTransaction(); /** * 如果查询的是实体对象,在查询缓存中缓存的是实体对象的ID列表,而实体对象本身被放到了二级缓存中,所以查询缓存需要配合二级缓存一起使用。 * 假如二级缓存没有启用,将导致即使是list操作也会发出n条查询语句去查询实体对象! */ String hql = "sel...原创 2010-12-20 11:16:45 · 77 阅读 · 0 评论