hibernate碎碎念

来源:互联网 发布:联合国国际贸易数据库 编辑:程序博客网 时间:2024/06/04 20:09

不知道怎么命名,只是感觉以下东西比较零碎,但是狠重要,狠重要,也狠容易忘记啊。就让我碎碎念哈子啦。。。

1.getCurrentSession()  区别 openSession()

  •  openSession()每次获取的都是新session ,commit后需要手动关闭 ;
  •  getCurrentSession()存在session用当前session,不存在就获取新的。commit后自动关闭;
  •  两者不能同时使用。


2.hibernate对象中的三种状态( Transient--->Persistent-->Detached)

  • Transient(内存中的一个对象,缓存中没有,内存中没有,没有id)
  • Persistent(内存中有,缓存中,数据库中有,有ID)
  • Detached(内存有,缓存没有,数据库有,有ID)



3. session中get()区别load()

  • get()直接执行sql
  • load()代理,什时候用到,什么时候执行sql


4.JTA  , JPA 

  • java  transaction  API 
  • Java persistent    API


5.只更新更改的字段,而不更新所有字段

  • annotation: @updatable
  • xml:dynamic- update ="true"   (<class name="com.hibernate.Student" dynamic-update="true">)


6.merge()   --->load() +update()

  •    Session.saveOrUpdate()  有Id执行update()没ID执行save()


7.所有的持久化类(persistent classes)都需要无参数的构造函器

  • 因为hibernate必须使用Java反射机制来创建对象
  • 如改写persistent  classes 中的构造函数,一定要手动添加无参构造函数。


未完待续。。。。。。。。


0 0