Hibernate中的Session

大家在看hibernate视频的时候一定都发现了,每次要操作数据库,总是要新建一个session对象,Hibernate在对资料库进行操作之前,必须先取得Session实例,相当于JDBC在对资料库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础。

Session三种状态

Session的生命周期绑定在一个物理的事务(tansaction)上面。(长的事务可能跨越多个数据库事物。)

Session的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:

自由状态(transient): 不曾进行持久化,未与任何Session相关联

持久化状态(persistent): 仅与一个Session相关联

游离状态(detached): 已经进行过持久化,但当前未与任何Session相关联

游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。

持久化实例可以通过调用 delete()变成游离状态。

通过get()或load()方法得到的实例都是持久化状态的。

游离状态的实例可以通过调用 update()、0saveOrUpdate()、lock()或者replicate()进行持久化。

游离或者自由状态下的实例可以通过调用merge()方法成为一个新的持久化实例。

save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE,而update()或merge()会引发SQLUPDATE。

对持久化(persistent)实例的修改在刷新提交的时候会被检测到,它也会引起SQLUPDATE。

saveOrUpdate()或者replicate()会引发SQLINSERT或者UPDATE。

Session使用方法

 Session session = sessionFactory.openSession();                                   

      Student student = (Student) session.get(Student.class, 1);
// Student student = (Student) session.get("com.entity.Student", 1);
System.out.println(student); session.close();

最新文章

  1. iOS查看3D效果的手势交互
  2. UVALive - 3942 Remember the Word[Trie DP]
  3. Prince2七大原则(4)
  4. CentOS7 修改主机名(转)
  5. C#读取Excel文件:通过OleDb连接,把excel文件作为数据源来读取
  6. SSL/TLS 高强度加密: 常见问题解答
  7. jquery and jquery validation 常见问题解决
  8. shell脚本之lnmp的搭建
  9. IBatis.Net系列-多参数的SQL语句的配置
  10. 通过GCD、NSOperationQueue队列、NSThread三种方法来创建多线程
  11. 整理mysql的一些常用用法
  12. RabbitMq学习一入门篇(hello world)
  13. 简单谈谈js中Promise的用法
  14. 做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘
  15. victory-native的使用
  16. Atlas实现MySQL大表部署读写分离
  17. git宝典—应付日常工作使用足够的指北手册
  18. java的static与C#的static的异同
  19. 李宏毅机器学习笔记3:Classification、Logistic Regression
  20. 微信H5授权登录,公众平台,开放平台

热门文章

  1. switch的练习
  2. python 为 class 添加新的属性和方法
  3. OpenCV2.4和OpenCV3之间函数的转变
  4. tomcat文件目录结构及功能介绍
  5. Luogu P3254 圆桌问题(最大流)
  6. Django项目:CRM(客户关系管理系统)--23--15PerfectCRM实现King_admin多条件过滤
  7. Bootstrap常见的类
  8. OCR Tesseract 识别报 empty page解决办法
  9. poi操作word,简单写docx
  10. webpack4进阶配置