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 延迟到页面显示完毕后在进行关闭。

 

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

相关文章
|
2月前
|
Java 关系型数据库 数据库连接
Hibernate学习笔记(一)快速入门
Hibernate学习笔记(一)快速入门
|
10月前
|
SQL Java 数据库连接
Hibernate_学习笔记
Hibernate_学习笔记
|
SQL Java 数据库连接
hibernate入门学习笔记
hibernate入门学习笔记
64 0
|
存储 SQL Java
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)
|
SQL 存储 缓存
hibernate学习笔记之一(下)
hibernate学习笔记之一(下)
hibernate学习笔记之一(下)
|
SQL XML 安全
hibernate学习笔记之一(上)
hibernate学习笔记之一(上)
hibernate学习笔记之一(上)
|
SQL JSON Java
SpringBoot 整合 JPA-Hibernate|学习笔记
快速学习 SpringBoot 整合 JPA-Hibernate
138 0
SpringBoot 整合 JPA-Hibernate|学习笔记
|
Java 数据库连接 开发工具
Hibernate 控制反转|学习笔记
快速学习 Hibernate 控制反转
|
Java 数据库连接 数据库
Hibernate学习笔记8,session管理,事务控制
Hibernate学习笔记8,session管理,事务控制 Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰。
1595 0
|
Java 数据库连接 数据库