瞧传智播客_hibernate 领悟与总结(一)
看传智播客_hibernate 领悟与总结(一)
2.对象状态:
看传智播客_hibernate 领悟与总结(一)
1.总结Session的几个主要方法
2.总结对象状态
3.总结hibernate的工厂
1.save,persist保存数据,persist在事务外不会产生insert语句。
2.delete,删除对象
3.update,更新对象,如果数据库中没有记录,会出现异常。
4.get,根据ID查,会立刻访问数据库。
5.Load,根据ID查,(返回的是代理,不会立即访问数据库)。
(get和load的区别之二:如果加载的数据不存在,get方法会返回一个null对象,但是如果使用的是load方法,要加载的数据不存在时,系统就会抛出异常。)
6.saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用saveOrUpdate你的对象会变为持久的。调用merge你的对象还是脱管(脱离session管理)的。
7.lock(把对象变成持久对象,但不会同步对象的状态)。
2.对象状态:
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM(java虚拟机)垃圾回收器回收,一般是new出来且与session没有关联的对象。
持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到(脱管,也叫游离态)。
下面是对对象状态的图例演示:
下面是详细的对象状态转换图:
3.Hibernate的工厂