最近做项目,很多时候都用到hibernate的save方法,发现了一些自己原来不知道的东西,在这里总结总结
首先就是save方法的作用
Session的save()方法使一个临时对象转变为持久化对象。
这句话看似简单,还是很多东西要注意的。
1. 不要把持久化对象或游离对象传给save()方法
来看一段代码
Customer customer = (Customer) session.get(Customer.class, customerID);
List<Item> items = customer.getItems();
for (Item i : items)
{
session.save(i); // 这里不会触发插入操作
}
customer.setName("New");
session.save(customer); // 这里应该最好使用update, save也是可以的
2. save()方法并不立即执行SQL insert语句。只有当Session清理缓存时,才会执行SQL insert语句。如果在save()方法之后,又修改了持久化对象的属性,这会使得Session在清理缓存时,额外执行SQL update语句。
再来看一段代码,这段代码其实有两个sql操作
Customer customer = new Customer();
session.save(customer);
customer.setName("Tom");
session.save(customer); // 这步操作是多余的
transaction.commit();
应该改成如下样子
Customer customer = new Customer();
customer.setName("Tom");
session.save(customer);
transaction.commit();
分享到:
相关推荐
本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助开发者更好地理解它们的用法和内在机制。 一、save()方法 save()是Hibernate早期版本中最常用的方法,用于将对象持久化到数据库中。当调用Session...
首先,`session.save()`是Hibernate中的一个关键方法,用于将一个新的或已更新的对象状态保存到数据库中。在模拟这个功能时,我们需要关注以下几点: 1. **对象状态管理**:在Hibernate中,对象有三种状态:瞬时态...
标题“使用Hibernate封装方法”暗示我们将讨论如何在项目中通过封装Hibernate操作,以提高代码的复用性和可读性。通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作...
让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化SessionFactory** `HibernateSessionFactory`类通过`cfg.configure(CONFIG_FILE_LOCATION)`来读取配置文件(默认为...
Netbeans 配置 Hibernate 的方法 Netbeans 是一个功能强大且广泛使用的集成开发环境(IDE),它支持多种编程语言,包括 Java、PHP、Python 等。Hibernate 是一个流行的对象关系映射(ORM)工具,它能够将 Java 对象...
本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...
总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...
本教程将重点讲解在使用Hibernate时,如何处理查询结果集合,特别是通过`list()`和`iterator()`方法进行数据迭代的操作。 【描述】"http://blog.csdn.net/e421083458/article/details/8794127" 这个链接指向的是一...
`saveOrUpdate`是Hibernate提供的一种便捷方法,用于处理对象的保存或更新操作。在深入讲解`saveOrUpdate`之前,我们先理解一下Hibernate的基本概念。 在Hibernate中,实体类(Entity Class)代表数据库中的表,...
1. 增加(Insert):在Hibernate中,我们可以通过Session的`save()`或`saveOrUpdate()`方法来保存新对象到数据库。在Spring整合中,通常会在Service层调用DAO层的方法,如`userRepository.save(user)`。 2. 删除...
- **保存/插入**:使用`Session`的`save()`或`saveOrUpdate()`方法来保存新实体到数据库。 - **更新**:对已存在的实体进行修改后,调用`Session`的`update()`方法来更新数据库。 - **删除**:通过`Session`的`...
- **保存(Save)**:使用Session的save()方法,将对象持久化到数据库。如果对象没有ID,Hibernate会根据配置的主键策略生成并分配ID。 - **更新(Update)**:调用Session的update()方法,将已存在的对象状态同步...
Hibernate基本数据操作方法 java struts hibernate
4. 操作对象:通过Session的save()、update()、delete()方法,可以完成对象的保存、更新和删除操作。使用get()和load()方法检索对象,使用Criteria或HQL查询对象集合。 5. 提交事务:在一组数据库操作完成后,使用...
- **persist** 方法与`save`方法类似,都是用于将瞬态对象变为持久化状态。但是,`persist`有一个重要的特性,即它不保证会立即执行SQL INSERT语句。在某些情况下,如事务外部调用`persist`时,它可能不会立即执行...
Hibernate提供了CRUD(Create, Read, Update, Delete)操作,通过save()、get()、update()、delete()等方法,可以方便地进行数据的增删改查。此外,还有Criteria API和HQL(Hibernate Query Language)用于复杂查询...
我们可以使用Session的save()、update()、delete()方法进行CRUD操作,或者使用Criteria、HQL或JPQL进行查询。 5. **事务处理**:在Session的开始和结束之间,需要包裹在Transaction中,确保数据的一致性。当事务...
SessionFactory 是 Hibernate 的 Session 工厂对象,它提供了一些方法来创建和管理 Hibernate 的 Session 对象。SessionFactory 对象是 Hibernate 的核心组件之一。 Hibernate 的优点 Hibernate 有很多优点,它...
本文将详细介绍 Hibernate 中常用的几种方法,包括 `save`, `update`, `saveOrUpdate`, `merge` 等,帮助开发者更深入地理解 Hibernate 的工作原理及其使用方式。 #### 二、Hibernate 对象状态管理 在 Hibernate ...
6. **持久化操作**: 使用Hibernate进行CRUD(创建、读取、更新、删除)操作时,我们可以通过`save()`、`get()`、`update()`、`delete()`等方法,以及`Criteria`、`HQL`(Hibernate查询语言)或JPQL(Java ...