Hibernate对其持久化对象实现了缓存管理,来提高系统性能,Hibernate支持两级缓存管理,一级缓存
是由Session提供的,因此它只存在于Session的生命周期中,是Session所内置的,不能被卸载。
Hibernate的二级缓存是由SessionFactory提供的,他作为一个可插入的组件使用的,默认是不支持的,应用必须明确配置二级缓存才能使用.
Session缓存的作用:
降低数据库的访问频率
保证缓存中的对象与数据库中的相关记录保持同步
持久化对象的状态:
临时状态(Transient) 刚刚用new创建,还没有被持久化,还不处于Session缓存之中
持久化状态(Persistent) 已经被持久化,加入到Session的缓存之中
游离状态(Detached) 已经被持久化,但不再处于Session的缓存之中
判断一个对象处于怎样的状态
:
主要的依据是
: 1.
看该对象是否处于
session管理 ;2.
看在数据库中有没有对应的记录
瞬时态
:
没有
session
管理
,
同时数据库没有对应记录
持久态
:
有
session
管理,同时在数据库中有记录
脱管态
/
游离态:
没有
session
管理,但是在数据库中有记录
.
临时对象
的特征:
不处于Session的缓存中
在数据库中没有对应的记录
以下情况会使对象进入临时状态:
当通过new语句刚创建了一个对象
Session的delete()方法会使一个对象从持久化状态或游离状态进入临时状态
持久化对象
的特征:
位于一个Session实例的缓存中
持久化对象和数据库中相关的记录对应
Session在清理缓存时,会根据持久化对象的属性的变化来同步更新数据库
Session的save()方法把临时对象变为持久化对象
Session的update(), saveOrUpdate(),lock()使对象从游离状态变成持久化状态。
Session的load()或get()方法返回的是持久化对象,find()方法返回的List元素
游离对象
的特征:
不再处于Session的缓存中
游离对象是从持久化对象转变过来的
调用Session的close()方法时,Session的缓存被清空,缓存中的持久化对象会变成游离对象
Session的evict()能从缓存中删除一个对象,使之从持久化状态变成游离状态
save()//保存对象
把临时对象加入到缓存中,使之成为持久化对象
使用指定的ID生成器为持久化对象分配OID
当对象处于持久化状态,Hibernate不允许修改其OID
update()//修改对象
把游离对象加入到缓存中,使一个游离对象变成持久化对象
计划执行update SQL语句,根据对象的OID来更新对象所对象的数据
update()不能更新一个在session中已经关联的相同OID的对象
saveOrUpdate()//保存或修改对象
同时包含了save()和update()方法的功能,根据对象的状态自动执行相应的功能
若对象为临时状态,执行save()方法,若为游离状态则执行update()方法
merge() //合并对象
直接修改表中的记录,并不影响该对象原来的状态
contains() //判断实体对象是否与Sesison关联
可以用此方法判断对象是否处于持久化状态
evict()
//把实体对象从Session缓存中移除
clear()
//清除Session缓存中所有的持久化对象
delete() //删除指定的对象
配置级联删除
1. 设置cascade为“delete” 或 “all” 或 “save-update,delete”。 “all”与“save-update,delete”相同
学生和地址之间存在一对一的关系,如果希望删除学生信息时,同时删除地址信息,可以在学生这一头这样配置。
2.设置cascade=“delete-orphan”
班级和学生是一对多的关系,在班级的set元素中进行配置。更新班级对象时,检查set集合中缺少的学生对象,删除数据库中对应的学生记录。
get()
load()
两个方法的区别:
Books book=(Books) session.load(Books.class, 2);
都是根据指定的OID从数据库中加载一个持久化状态对象
当数据库中不存在与OID相对应的记录时,get()返回一个null引用,而load()方法会抛出ObjectNotFoundException异常
使用get 去查询数据,(先到一级/二级)会立即向db发出查询请求(select ...), 如果你使用的是 load查询数据,(先到一级、二级))即使查询到对象,返回的是一个代理对象,如果后面没有使用查询结果,它不会真的向数据库发select ,当程序员使用查询结果的时候才真的发出select ,这个现象我们称为懒加载(lazy)
通过修改配置文件,我们可以取消懒加载
<class name="Employee" lazy="false" table="employee">
如何选择使用哪个: 如果你确定DB中有这个对象就用load(),不确定就用get()(这样效率高)
- 大小: 38.9 KB
分享到:
相关推荐
Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...
《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...
在开始之前,建议先学习“hibernate:java持久化对象详解01”,以确保对基础概念有清晰的理解。 首先,我们来理解一下什么是持久化对象。在Java中,持久化对象(Persistent Object)是指其状态可以在数据库中长期...
通过阅读《精通Hibernate:Java对象持久化详解》,开发者可以深入了解Hibernate的工作原理,学习如何有效地使用它来实现对象持久化,从而提高开发效率,降低维护成本。这本书对于Java Web开发者,尤其是初次接触...
4. **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但更接近Java的语法,用于检索和操作持久化对象。 5. **第二级缓存**:Hibernate支持查询结果的缓存,可以显著提高系统性能,特别是对于...
总的来说,这本书和配套文档为Java开发者提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅,提升你在J2EE开发中的对象持久化能力。通过深入理解和实践,你可以更加自如地应对...
本教程“hibernate:java持久化对象详解01”聚焦于理解Hibernate如何将Java对象持久化到数据库中。 首先,让我们了解一下什么是持久化对象。在Java中,持久化对象是指那些状态可以被保存到持久存储介质(如数据库)...
《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...
【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...
精通 Hibernate:Java 对象持久化技术详解 第2版 学习Hibernate必备得一本书
**Hibernate对象持久化** 在Java开发中,数据库操作是不可或缺的一部分。Hibernate作为一种强大的ORM(对象关系映射)框架,极大地简化了Java应用与数据库之间的交互。它通过将Java类映射到数据库表,实现了对象...
通过这些章节的学习,读者不仅可以理解Hibernate的工作原理,还能熟练运用它来实现Java对象的持久化,从而提升数据库操作的效率和便捷性。每章的源码实例将帮助读者更好地理解和实践这些理论知识。
在阅读《精通Hibernate:Java对象持久化技术详解》的同时,可以结合“爱书吧-2万本图书免费下载.url”这个资源链接,寻找更多相关的学习资料和实战案例,以加深理解和提高技能。总的来说,这是一份非常全面且实用的...
### 知识点一:Hibernate框架概述 - **定义与作用**:Hibernate是...这本《精通 Hibernate_Java 对象持久化技术详解(第2版)》涵盖了从基础到高级的所有重要内容,非常适合希望深入学习Hibernate技术的Java开发者阅读。
**hibernate持久化技术详解** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的强大工具。通过Hibernate,开发者可以将数据库操作转化为对Java对象的操作,大大降低了...
【hibernate学习资料大全】 Hibernate 是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。...希望这些资料能对CSDN的网友们在Hibernate学习之路上提供宝贵的帮助。
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...