查询load()和get()的区别

   # 以下查询都是根据id查询
// Load和Get都会在第一次查询的是创建一个一级缓存查询语句
// 下一次查询的时候从缓存中查询是否有缓存的语句
// 如果有只发送一条查询语句
Student getS_1 = session.get(Student.class,);
Student getS_2 = session.get(Student.class,);
// 发送一条MySQL语句[SELECT * FROM student WHERE ID = ?]
Student loadS_1 = session.load(Student.class,);
Student loadS_2 = session.load(Student.class,);
// 发送一条MySQL语句[SELECT * FROM student WHERE ID = ?]
// 因为一级缓存中有[SELECT * FROM student WHERE ID = ?]语句 /**
* Load懒加载,如果不调用查询的数据,那么不发送信息
* Get即使不调用,也会发送查询信息
* 发送查询MySQL语句[SELECT * FROM student WHERE ID = ?]
*/ /**
* 如果查询没有的信息
* load会抛出异常ObjectNotFount
* get会返回null
*/

Hibernate对象的三种状态

(1)瞬态:

表示该实体对象在内存中是自由存在的,也就是说与数据库中的数据没有任何的关联即,该实体从未与任何持久化上下文联系过,没有持久化标识(相当与主键)。瞬态实体的特征有:
  与数据库中的记录没有任何关联,也就是没有与其相关联的数据库记录 与Session没有任何关系,也就是没有通过Session对象的实例对其进行任何持久化的操作。
(2)持久态:

指该实体对象处于Hibernate框架所管理的状态,也就是说这个实体对象是与Session对象的实例相关的。处于持久态的实体对象的最大特征是对其所作的任何变更操作都将被Hibernate持久化到数据库中。处于持久态的对象具有的特征为:              
  每个持久态对象都于一个Session对象关联
  处于持久态的对象是于数据库中的记录相关联的
  Hibernate会根据持久态对象的属性的变化而改变数据库中的相应记录
(3)游离态:

处于持久态的实体对象,当他不再与Session对象关联时,这个对象就变成了游离态。游离态对象的特征有:
  游离态对象一定是由持久态对象转换而来
  游离态实体不再于Session关联
  游离态实体对象与数据库中的数据没有直接联系,主要表现在对其进行的修改不再影响到数据库中的数据
  游离态实体对象在数据库中有相应的数据记录(如果该记录没有被删除)

获取Session回话

// 获取当前Session
// #注意:需要配置xml文件
// <property name="current_session_context_class">thread</property>
// 获取Session是同一个Session
sessionFactory.getCurrentSession();
// 获取新的Session
sessionFactory.openSession();

添加save()和saveOrUpdate()的区别

// save执行保存操作,更倾向于添加一个新的对象
s.save(obj);
// saveOrUpdate() 倾向不确定插入和更新
// 有主键就执行更新,如果没有主键就执行插入
s.saveOrUpdate(obj);

最新文章

  1. asp.net web api集成微信服务(使用Senparc微信SDK)
  2. Git for Windows v2.11.0 Release Notes
  3. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性
  4. Android 广播机制(两种注册方法)与中断广播
  5. poj2192(搜索)
  6. javascript 动态操作Html
  7. Intra Chroma Prediction
  8. 图文解说PhpStorm 7.0版本语法着色
  9. [河南省ACM省赛-第三届] BUYING FEED (nyoj 248)
  10. Sql sever 常用语句(续)
  11. Failed to load the JNI library &quot;E:\JDK6.0\bin\client\jvm.dll&quot;
  12. hadoop 开发环境搭建
  13. 【转】I&#178;C总线上拉电阻阻值如何选择?
  14. 利用nodeJs anywhere搭建本地服务器环境
  15. 20 个常用的 CSS 技巧
  16. Go语言中的一些函数
  17. How to push master to QA branch in GIT
  18. Linux中文件I/O函数
  19. hdu2509Be the Winner(反nim博弈)
  20. XML的两种解析方式

热门文章

  1. ActionContext和ServletActionContext小结(转)
  2. Oracle AP更新供应商
  3. Linux HugePages 配置与 Oracle 性能关系说明
  4. [UI] 精美UI界面欣赏[11]
  5. 生成器(generator),迭代器(yield)
  6. windows安装及配置mysql5.7
  7. FtpWebRequest与FtpWebResponse完成FTP操作
  8. 在web.xml中配置404错误拦截
  9. Maven实战(九)Maven仓库简介
  10. AOP的本质