Hibernate Session 生命周期|学习笔记

简介: 快速学习 Hibernate Session 生命周期

开发者学堂课程【Java 面试疑难点串讲 3:开发工具及框架:Hibernate Session 生命周期】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/26/detail/552


Hibernate Session 生命周期


Hibernate 里面没有所谓的 Session 生命周期。因为 Session 严格来讲就是指的每-个用户,而如果是实体层里面把 Session 有两点作用(基于 Hbernate)。

 

一个是维护对象的状态,也就是说持久态问题:如果现在使用了 Session 对象的get().load() 方法进行了某一个数据查询的时候,默认情况下只要 Sssion 不关闭,那么就表示该 Session 中的对象直与数据库中的实例关联,那么这个时候如果你调用了 POJO 类的 setter 方法修改的数据。

就会引起据表中对应数据行的数据改变,这个就是持久态的设计而这种设计也是整个 Hibernate 最烂的一点。但是如果倒退到十年前,这就是最好的设计,因为此设计与 EB (ntit Bean) 效果是一样的。

还有一个是进行一级缓存使用的:指的是如果现在要进行 get().load() 数据查询的时候,只要该数据查询了一次,并且在 Session 不关闭的情况下续重复使用,那么对于 Hibernate 而是不会继续重复发出查询指令的。

而是会将对象默认保存在内存里面,如果发现有样的主键查询。那么就直接通过内存加载。

Hibernate 的 Session 是在使用的时候通过 SessionFactory 打开 (Spring  整合的时候也是使用 SessionFactory 打开),这个打开和关闭自动的在你使用之前和之后自动处理操作。

 

这里面有一个问题:在 Spring 与 Hibernate 整合的时候由于存在有一个数据的延迟加载机制,所以在 Spring 里面会提供有一种策略:“OpenlnView" 指的是Hibernate 的 Session 延迟到页面显示完毕后在进行关闭。

 

这样就解决了数据的级联显示操作。但是这种处理会对事务控制造成困难,所以此类开发好像是没有在实际的工作中出现过的。

相关文章
|
3月前
|
缓存 安全 Java
|
3月前
|
缓存 安全 Java
Hibernate 中的 Session 是线程安全的吗?
【8月更文挑战第21天】
43 0
|
3月前
|
缓存 安全 Java
Hibernate 中的 Session 是什么?
【8月更文挑战第21天】
42 0
|
5月前
|
Oracle Java 关系型数据库
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
|
6月前
|
Java 关系型数据库 数据库连接
Hibernate学习笔记(一)快速入门
Hibernate学习笔记(一)快速入门
|
6月前
|
SQL 缓存 Java
Hibernate - Session管理与批量数据处理详解
Hibernate - Session管理与批量数据处理详解
85 0
|
6月前
|
存储 缓存 Java
Hibernate - Session方法与持久化对象详解
Hibernate - Session方法与持久化对象详解
148 0
|
6月前
|
SQL 缓存 Java
Hibernate - SessionFactory和Session详解
Hibernate - SessionFactory和Session详解
128 0
|
SQL Java 数据库连接
Hibernate_学习笔记
Hibernate_学习笔记
|
SQL Java 数据库连接
Hibernate中的Session对象
Hibernate中的Session对象
89 0