
hibernate
呼啸
09年开始编程,一直到现在。看看自己进步了什么。
展开
-
hibernate札记
在pojo中,注解既可以防放杂get()方法上,也可以放在字段上。but,当你放在字段上时,就破坏了java的面向对象封装性。因为,一般来说,字段为Private的,而你在此注解,等于说Hibernate可以访问你的私有变量。原创 2012-09-23 22:52:36 · 544 阅读 · 0 评论 -
数据库系统的锁的基本原理
在数据库系统的ACID特性中,隔离性是指数据库系统必须具有隔离并发运行的各个事务的能力,使它们不会相互影响。 数据库采用锁来实现事务的隔离性。锁的基本原理如下: 1、当一个事务访问某种数据库资源时,如果执行select语句必须先获得共享锁,如果执行insert、update、或delete语句,必须先获得独占锁,这些锁用于锁定被操作的资源。 2、当第二个事务也要访问相同的资源时,相应的语句也原创 2013-10-15 22:38:43 · 2334 阅读 · 0 评论 -
hibernate级联保存和更新
当hibernate持久化一个临时对象时,默认情况下,它不会自动持久化所关联的其他临时对象。所以会抛出TransientObjectException异常。如果希望hibernate持久化这个临时对象时自动持久化所关联的临时对象,要把的cascade属性设为"save-update".(默认为"none") <many-to-one name="school" column="scho原创 2013-09-29 11:03:10 · 1237 阅读 · 0 评论 -
Hibernate多对一映射单向关联
比如学生和学校。多个学生都对应一个学校。这里说的是从学生到学校的多对一单向关联。 public class Student { private Long id; private String name; private School school; ....getter setter } 看看School.hbm.xml原创 2013-09-26 22:17:39 · 725 阅读 · 0 评论 -
hibernate杂记2013/9/25
标识符生成策略为"assigned",表示由应用程序为name属性赋值.这时,可以设置版本控制元素的unsaved-value属性。如果对象的version属性为null,就表示临时对象,否则为游离对象。 Session的getIdentifier()方法返回对象的OID。原创 2013-09-25 22:07:59 · 665 阅读 · 0 评论 -
hibernate映射组成关系
在创建对象-关系映射文件时,不能使用元素来映射Person类的homeaddress属性,而要使用元素,代码如下: ... 元素表明homeAddress属性是Person类的一个组成部分,在hibernate中称为组件,中包含一个子元素,指定Address类所属的整体类。与此对应,在Address类中应该定义一个person属性。子元素用来配置组件类的属性和表中字段的映原创 2013-10-03 12:20:32 · 1150 阅读 · 0 评论 -
hibernate类级别的检索策略
1、立即检索 在School.hbm.xml文件中,以下表示采用立即检索策略: 当采用Session的load方法检索School对象时: School school = (School)session.load(School.class,new Long(1)); hibernate会理解查询school表的select语句: select * from原创 2013-10-02 15:12:06 · 1968 阅读 · 0 评论 -
hibernate的一级缓存和二级缓存
Session缓存是hibernate的第一级缓存,通常它是事务范围内的缓存,也就是说,每个事务都有单独的第一级缓存。SessionFactory的外置缓存为hibernate的第二级缓存,它是应用范围内的缓存,也就是说,所有事务都共享同一个第二季缓存。在任何情况下,hibernate的第一级缓存总是可用的。而在默认情况下,hibernate的第二级缓存是关闭的,此处可以在hibernate的配置原创 2013-10-01 16:19:00 · 902 阅读 · 0 评论 -
java对象在hibernate持久层的状态
站在持久化层的角度,一个java对象在它的生命周期中,可处于以下4个状态之一: 临时状态(transient):刚刚用new语句创建,还没有被持久化,并且不处于Session的缓存中。 持久化状态(persistent):已经被持久化,并且被加入到Session的缓存中。 删除状态(removed):不再处于Session的缓存中。并且Session已经计划将其从数据库中删除。 游离状态(原创 2013-09-30 14:26:39 · 1396 阅读 · 0 评论 -
Hibernate级联删除
如果cascade属性是默认值"none",当hibernate删除一个持久化对象的时候,不会自动删除与它关联的其他持久化对象。如果希望自动删除它关联的其他持久化对象,可以把casacde属性设为"delete"; <set name="students" cascade="delete" inverse="true"> 那么hibernate在删除一个Shool对象时原创 2013-09-29 20:37:17 · 1443 阅读 · 0 评论 -
hibernate映射一对多双向关联关系
首先在"一"方类中增加一个集合属性Student: private Set students = new HashSet(); public Set getStudents(){ return student; } public void setStudents(set students){ this.students = students; } 注意,hibernate要求在持久原创 2013-09-29 17:11:10 · 874 阅读 · 0 评论 -
hibernate ...many2one
为防止冗余,在数据库表设计时在多方加外键 先看annotation: package com.feng.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Tabl原创 2013-05-28 23:45:01 · 798 阅读 · 0 评论 -
hibernate..one 2 one
比如丈夫与妻子的一对一: Husband实体类: package com.feng; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.p原创 2013-05-24 22:02:18 · 832 阅读 · 0 评论 -
Hibernate...clear..flush
无论是load还是get,都会首先查找缓存(一级缓存),如果没有,才会去数据库查找,调用clear方法可以强制清楚session缓存。 flush方法:可以强制进行从内存到数据库的同步 flash的模式有很多,记不住,查API吧原创 2013-05-19 21:11:21 · 1101 阅读 · 0 评论 -
Hibernate..update
1、用来更新detached对象,更新完成后转为persitent对象。 2、更新transient对象会报错。 3、更新自己设定的id的transient对象。(数据库有对应记录) 4、P状态的对象,只要设定不同字段就会发生更新 5、更新部分更改的字段 a)xml设定property标签的update属性,annotation设定@column的updatable属性,不过这种方式很原创 2013-05-18 12:42:10 · 803 阅读 · 0 评论 -
Hibernate中session.get和session.load的区别
session.get会立即生成SQL语句去执行 而session.load并不会立即生成SQL语句去执行,会先生成你的对象的代理,当你使用到这个对象的属性时才会生成SQL语句去执行 如: Teacher t = (Teacher)session.load(Teacher.class,1); session.getTranscation.commit(); 执行以上两步并不会报错。原创 2013-05-16 23:16:43 · 1061 阅读 · 0 评论 -
hibernate中如何替换slf4j为log4j
1.先移除slf4j的实现jar包。 2.加入log4j的jar包:log4j.1.2.15.jar。 3:从hibernate-distribution-3.3.2.GA-dist\hibernate-distribution-3.3.2.GA\project\etc中拷贝log4j.properties到src目录下。etc中有很多实例文件。 完成。 如果想让控制台不输出DDL语句。在原创 2013-03-31 13:02:22 · 1422 阅读 · 0 评论 -
Hibernate 中采用JPA (java persistence api)Annotation 札记
Hibernate 中采用JPA (java persistence api)Annotation 当采用Annotation来管理实体类之后,可以得到如下公式: PO =PO +@Annotation; 使用Annotation来定义一个实体类。 Person.java @Entity //标明这是一个持久化类 @Ta原创 2012-12-14 11:21:25 · 1338 阅读 · 0 评论 -
hibernate实现乐观锁的方法
1、使用version或者timestamp(推荐version,因为timestamp只能精确到秒,且必须保证数据库服务器的时间和应用程序的时间一致)。 2、如果APP是基于已有的数据库,而数据库表中不包含代表版本或时间戳的字段,hibernate提供了其他实现乐观锁的方法,把元素的optimistic-lock属性设为"all": 注意:如果把元素的optimistic-lock属原创 2013-10-20 18:56:36 · 2134 阅读 · 0 评论