Hibernate数据保存——Session.save
Session.save方法用户实体对象到数据库的持久化操作。也就是说,Session.save方法调用与实体对象所匹配的Insert SQL,将数据插入库表。Session.save方法中包含了以下几个主要步骤:
1. 在Session内部缓存中寻找待保存的对象。内部缓存命中,则认为此数据已经保存(执行过insert操作),实体对象已经处于Persistent状态,直接返回。此时,即使数据相对之前状态已经发生了变化,也将在稍后的事务提交时,由脏数据检查过程加以判断,并根据判断结果决定是否要执行对应的Update操作。
2. 如果实体类实现了Lifecycle接口,则调用待保存对象的onSave方法。
3. 如果实体类实现了Validatable接口,则调用其validate方法
4. 调用对应拦截器的Interceptor.onSave方法(如果有的话)
5. 构造Insert SQL,并执行
5. 记录插入成功,实体对象的id被设定未insert操作返回的新记录id值
7. 将user对象放入内部缓存。这里值得一提的时save方法不会把实体对象纳入二级缓存,因为通过save方法保存的实体对象,在事务的剩余部分中被修改的几率往往很高,缓存的频繁更新以及随之而来的数据同步问题的代价,已经超过了此数据得到重用的可能收益,得不偿失。
8. 最好,如果存在级连关系,对级连关系进行递归处理。
分享到:
相关推荐
9. **查询语言HQL**:Hibernate提供了自己的查询语言——Hibernate Query Language(HQL),它是面向对象的,类似于SQL,但操作的是对象而不是表格。此外,Hibernate还支持 Criteria 查询和JPQL(Java Persistence ...
《Hibernate ORM框架详解——以hibernate-release-5.4.18.Final为例》 Hibernate,作为Java领域中的一款主流对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以专注于业务逻辑而无需过多关注底层SQL...
创建新的学生或课程对象,设置相关属性,然后调用`Session.save()`方法将其保存到数据库。 2. **读取(Read)** 使用`Session.get()`或`Session.load()`根据主键获取对象,或者使用`Session.createQuery()`或`...
使用`Session`对象的`save()`或`saveOrUpdate()`方法来保存实体到数据库: ```java Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User("John ...
**Hibernate使用——入门** Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。这篇博文将引导你入门Hibernate,理解其基本概念和使用方法。 **1. Hibernate概述** ...
3. 打开事务,执行Session的save()或persist()方法,将News对象保存到数据库。 4. 提交事务,关闭Session。 对于模糊查找功能,Struts2 Action会接收用户输入的关键词,然后构造HQL(Hibernate Query Language)...
《Hibernate框架精简版——深入理解与应用》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作上的工作。"hibernate-min-lib.rar" 提供了一个精简版的Hibernate库,包含了...
本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...
保存数据时,我们可以调用Session的`save()`或`persist()`方法。例如,创建一个新的`User`对象并保存到数据库: ```java Session session = sessionFactory.openSession(); Transaction transaction = session....
首先,理解Hibernate的核心组件——Session。Session是Hibernate中的工作单元,它是与数据库交互的主要接口,负责保存、更新和删除对象,同时提供查询功能。在Java应用中,我们需要先初始化SessionFactory,然后通过...
在Hibernate 4.1.5.SP1中,这个框架已经相当成熟,支持多种数据库平台,包括MySQL、Oracle、PostgreSQL等,并且具备强大的查询语言——HQL(Hibernate Query Language)。 二、主要特性 1. **对象关系映射(ORM)**...
10. **缓存机制**: Hibernate支持一级缓存(Session级别的)和二级缓存(SessionFactory级别的),可以提高数据访问效率,但需注意缓存一致性问题。 以上就是Hibernate的基本知识点和核心功能,通过这些概念和方法...
首先,我们需要了解Hibernate的核心概念——Session。在Hibernate中,Session是与数据库交互的主要接口,它负责对象的持久化、查询以及事务管理。Session的方法包括保存、更新、删除、加载、查询等,这些都是ORM框架...
实体类的实例可以通过Hibernate的Session接口进行持久化操作,如保存(`save()`或`saveOrUpdate()`)、更新(`update()`)、删除(`delete()`)和查询(`get()`、`load()`或`query()`)。 `HibernateBegin_1`可能是...
首先,我们需要了解Hibernate的核心组件——SessionFactory和Session,它们是Hibernate工作流程中的关键。SessionFactory是线程安全的,负责创建Session实例,而Session则是与数据库进行交互的接口。接下来,我们...
对象持久化是将内存中的数据保存在永久存储介质——数据库中,以防止断电或网络传输时数据丢失。主要有以下原因促使我们进行数据持久化:内存的临时性,数据传输的限制,数据组织和查询的不便,以及内存容量的限制。...
本教程将引导您进入Java世界中的ORM(对象关系映射)框架——Hibernate。Hibernate是一个强大的工具,它允许开发者通过Java对象与数据库中的表进行交互,无需编写大量的SQL代码,极大地提高了开发效率。在这个简单的...
在这个hibernate入门实例中,我们将学习如何创建并使用HibernateUtil工具类,该类包含`save`和`get`方法,分别用于执行数据的保存和查询。 首先,我们需要在项目中配置Hibernate的相关文件,包括hibernate.cfg.xml...
接下来,我们将详细探讨Hibernate的核心配置文件——`hibernate.cfg.xml`。这个配置文件是Hibernate与数据库进行交互的基础,其中包含了数据库连接的相关信息。例如,`driver_class`属性定义了数据库的驱动类,`url`...
根据提供的信息来看,实际内容与所需生成的知识点——“Hibernate存储图片”的配置方法存在较大偏差。但是,基于题目要求,我们将围绕“Hibernate存储图片”这一主题展开详细论述,并结合给出的部分内容来尽可能地...