`
wanly3643
  • 浏览: 23550 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

说说Hibernate的save方法

阅读更多
最近做项目,很多时候都用到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();

1
3
分享到:
评论
2 楼 rochou 2012-08-27  
   
1 楼 仅此而已 2011-03-09  
Customer customer = new Customer(); 
session.save(customer);  // 这步操作是多余的 
customer.setName("Tom"); 
session.save(customer);
transaction.commit(); 

相关推荐

    Hibernate save persist merge探究

    本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助开发者更好地理解它们的用法和内在机制。 一、save()方法 save()是Hibernate早期版本中最常用的方法,用于将对象持久化到数据库中。当调用Session...

    模拟hibernate的session.save()功能

    首先,`session.save()`是Hibernate中的一个关键方法,用于将一个新的或已更新的对象状态保存到数据库中。在模拟这个功能时,我们需要关注以下几点: 1. **对象状态管理**:在Hibernate中,对象有三种状态:瞬时态...

    使用hibernate封装方法

    标题“使用Hibernate封装方法”暗示我们将讨论如何在项目中通过封装Hibernate操作,以提高代码的复用性和可读性。通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作...

    hibernate常用方法集合

    让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化SessionFactory** `HibernateSessionFactory`类通过`cfg.configure(CONFIG_FILE_LOCATION)`来读取配置文件(默认为...

    Netbeans 配置 hibernate 的方法

    Netbeans 配置 Hibernate 的方法 Netbeans 是一个功能强大且广泛使用的集成开发环境(IDE),它支持多种编程语言,包括 Java、PHP、Python 等。Hibernate 是一个流行的对象关系映射(ORM)工具,它能够将 Java 对象...

    Hibernate持久层方法汇总

    本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...

    Hibernate方法总结

    总的来说,HibernateTemplate提供了一组强大的方法来简化Hibernate的日常操作,涵盖了从简单的数据存取到复杂的数据库操作,极大地提升了开发效率。在实际应用中,根据数据量、性能需求以及业务逻辑,选择合适的方法...

    Hibernate教程24_Hibernate的补充_list与iterator

    本教程将重点讲解在使用Hibernate时,如何处理查询结果集合,特别是通过`list()`和`iterator()`方法进行数据迭代的操作。 【描述】"http://blog.csdn.net/e421083458/article/details/8794127" 这个链接指向的是一...

    hibernate 的saveOrUpdate

    `saveOrUpdate`是Hibernate提供的一种便捷方法,用于处理对象的保存或更新操作。在深入讲解`saveOrUpdate`之前,我们先理解一下Hibernate的基本概念。 在Hibernate中,实体类(Entity Class)代表数据库中的表,...

    spring hibernate整合的底层数据操作方法

    1. 增加(Insert):在Hibernate中,我们可以通过Session的`save()`或`saveOrUpdate()`方法来保存新对象到数据库。在Spring整合中,通常会在Service层调用DAO层的方法,如`userRepository.save(user)`。 2. 删除...

    hibernate数据库相关操作步骤

    - **保存/插入**:使用`Session`的`save()`或`saveOrUpdate()`方法来保存新实体到数据库。 - **更新**:对已存在的实体进行修改后,调用`Session`的`update()`方法来更新数据库。 - **删除**:通过`Session`的`...

    Hibernate方法的实现

    - **保存(Save)**:使用Session的save()方法,将对象持久化到数据库。如果对象没有ID,Hibernate会根据配置的主键策略生成并分配ID。 - **更新(Update)**:调用Session的update()方法,将已存在的对象状态同步...

    Hibernate基本数据操作方法

    Hibernate基本数据操作方法 java struts hibernate

    hibernate3 hibernate3

    4. 操作对象:通过Session的save()、update()、delete()方法,可以完成对象的保存、更新和删除操作。使用get()和load()方法检索对象,使用Criteria或HQL查询对象集合。 5. 提交事务:在一组数据库操作完成后,使用...

    hibernate的各种保存方式的区别

    - **persist** 方法与`save`方法类似,都是用于将瞬态对象变为持久化状态。但是,`persist`有一个重要的特性,即它不保证会立即执行SQL INSERT语句。在某些情况下,如事务外部调用`persist`时,它可能不会立即执行...

    hibernate学习资料大全

    Hibernate提供了CRUD(Create, Read, Update, Delete)操作,通过save()、get()、update()、delete()等方法,可以方便地进行数据的增删改查。此外,还有Criteria API和HQL(Hibernate Query Language)用于复杂查询...

    hibernate aip hibernate aip

    我们可以使用Session的save()、update()、delete()方法进行CRUD操作,或者使用Criteria、HQL或JPQL进行查询。 5. **事务处理**:在Session的开始和结束之间,需要包裹在Transaction中,确保数据的一致性。当事务...

    Hibernate入门到精通

    SessionFactory 是 Hibernate 的 Session 工厂对象,它提供了一些方法来创建和管理 Hibernate 的 Session 对象。SessionFactory 对象是 Hibernate 的核心组件之一。 Hibernate 的优点 Hibernate 有很多优点,它...

    hibernate各种常用方法的详解

    本文将详细介绍 Hibernate 中常用的几种方法,包括 `save`, `update`, `saveOrUpdate`, `merge` 等,帮助开发者更深入地理解 Hibernate 的工作原理及其使用方式。 #### 二、Hibernate 对象状态管理 在 Hibernate ...

    hibernate和MySQL的jar

    6. **持久化操作**: 使用Hibernate进行CRUD(创建、读取、更新、删除)操作时,我们可以通过`save()`、`get()`、`update()`、`delete()`等方法,以及`Criteria`、`HQL`(Hibernate查询语言)或JPQL(Java ...

Global site tag (gtag.js) - Google Analytics