Hibernate Session 的生命周期 瞬时对象(Transient Objects):使用new 操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收。 持久化对象(Persist Objects):持久实例是任何具有数据库标识的实例。它有持久化管理器Session统一管理,持久实例是在事务中进行操作的——它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中。 托管对象(Detached Objects):Session关闭之后,持久化对象就变为托管对象。托管表示这个对象不能再与数据库保持同步,它们不再受Hibernate管理。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Open Session in View 模式 在hibernate中使用load方法时,并未把数据真正获取时就关闭了session,当我们真正想获取数据时会迫使load加载数据,而此时session已关闭,所以就会出现异常。 比较典型的是在MVC模式中,我们在M层调用持久层获取数据时(持久层用的是load方法加载数据),当这一调用结束时,session随之关闭,而我们希望在V层使用这些数据,这时才会迫使load加载数据,我们就希望这时的session是open着得,这就是所谓的Open Session In view 。 我们可以filter来达到此目的。 |
相关文章
- 官网下载完全匹配自己Eclipse版本的Hibernate Tools
- 关于vue3生命周期的使用、了解以及用途(详细版)
- [置顶] 如何理解Hibernate中的HibernateSessionFactory类
- WIN7中因为服务进程是运行在session0下面的~~第一个登录的用户session为1(WTSGetActiveConsoleSessionId取得session的Id,OpenProcessToken取得进程的令牌)
- Vue框架:9,Vue3的用法,setup函数,ref和reactive,计算属性和监听属性,生命周期,toRefs,script setup的作用和lang,Vue后台管理模板
- [转]Hibernate Session各种状态转换方法分析
- 一般处理程序SESSION的问题
- 项目一众筹网02_2_管理员登录(转发改成重定向到主页面、退出登录(转发和重定向的区别、强制session失效invalidate)、新建jsp模板
- Java_SSH之Hibernate_002_06:一对多实体类和映射文件、一对多数据保存讲解、inverse的作用、用映射文件描述两个类之间的关系
- PHP中的会话控制—session和cookie(实现数据传值功能)