hibernate简介(Session,几种状态,方法······等)概括全面,经典
2014-09-23 17:44
281 查看
2.Hibernate跟jdbc的关系
Hibernate封装JDBC,持久化内存中的对象,同步到数据库 .1.关于封装,我得强调两点:
(1).把尽可能多的东西藏起来.对外提供简捷的接口.
(2)把所有的属性藏起来
当然我们,我们如果能够做到单一原则就更好了
2.关于持久化的概念
持久化定义:将程序数据在持久状态和瞬时状态间转换的机制。
这里讲的是Hibernate的话得讲一下中的几种状态:瞬时状态,持久状态,脱管状态
瞬时状态(Transient):指一个对象在内存中开辟空间.如
User user=new User();此时user对象就是瞬时状态的.
持久状态(Persistent):数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。可以以文件,数据库以及xml等形式.
脱管状态(Detached):当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。
这里我想总结一点关于瞬时状态和持久状态:瞬时态就是存在于内存中的,如果电脑关了后,再启动,之前在内存中的对象已经不在了,如果持久状态的话,保存在磁盘上的数据对象,当需要时还是可以加载到内存中,不会因电脑的启动而受到影响!
3.Session
Session接口是Hibernate向程序提供操纵数据库的最主要接口,是单线程对象,它提供了基本的保存、更新、删除和查询方法。它有一个缓存,保存了持久化对象,当清理缓存时,按照这些持久化对象同步更新数据库。注意:session的某些方法(persist,load)不会立即把改动写入数据库,而是缓存到session的一级缓存中,除非显示调用flush,或者关闭session时才会更新到数据库
瞬时状态(Transient):没与session关联
持久状态(Persistent):与session关联,没close
脱管状态(Detached):当session.close后
4.Session的方法详解
1.保存svae:立即插入数据库,并且返回主键
persist:不立即(延迟)插入数据库,无返回值
2.获取
load:加载对象后,对对象的改动不会立即刷新到db,必须flush到db
ex: User user=session.load(User.class,2);
user.setName('gt');
user.flush(); (延迟加载)
get:加载对象后,对对象的改动立即刷新到db
3.更新
update:持久化对象,更新
saveOrUpdate:包含save()和update()功能,如果传入的参数是临时对象(没有保存过)就调用save()方法;如果传入的参数是游离对象,就调用update()方法
merge:不会持久化对象,只会把托管对象的修改更新到db
4.删除
delete:从数据库中删除与JAVA对象对应的记录
5.清理
flush:把缓存同步到db
clear:清除session的缓存大小(更新批量时,应考虑)
5.映射关系
详见博客内单独介绍的文章
相关文章推荐
- hibernate简介(Session,几种状态,方法······等)
- hibernate简介(Session,几种状态,方法······等)
- 【Hibernate框架开发之五】Hibernate对象的三种状态&&Session的常用方法
- Hibernate对象的三种状态&&Session的常用方法
- <?>关于spring里HibernateDaoSupport的关于session的获取方法
- Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 转载的
- Hibernate对象的三种状态区别以及save等几种方法的区别
- Hibernate入门BLOG [三、session的常用方法和hibernate对象的3种状态]
- Hibernate之Session对象的相关方法以及持久化对象的状态
- 通过 @Autowired的使用来消除 set ,get方法 ---- Spring · JPA ·hibernate 的使用方法
- [转]Hibernate Session各种状态转换方法分析
- 【Hibernate框架开发之五】Hibernate对象的三种状态&Session常用方法
- Hibernate Session的delete()方法
- Hibernate 3种状态的区分和各种session方法的使用
- 【学习笔记】Hibernate中对象的状态和转换以及Session的主要方法总结
- Hibernate持久化对象状态 Session缓存(一级缓存),快照 操纵持久化对象的方法
- Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
- hibernate中PO对象的三种状态分析以及session中的一些方法的区别
- 解决Hiberante延迟加载问题——could not initialize proxy - no Session & 简介Hibernate的持久化
- hibernate中的session几种状态