Posted by: jigsaw
Posted on: 2005-06-03 14:31
我什么都不懂。。。不过这段抄自refrence里面的话对你可能有点用。。
10.7. Automatic state detection
The usage and semantics of saveOrUpdate() seems to be confusing for new users. Firstly, so long as you are not trying to use instances from one session in another new session, you should not need to use update(), saveOrUpdate(), or merge(). Some whole applications will never use either of these methods.
Usually update() or saveOrUpdate() are used in the following scenario:
the application loads an object in the first session
the object is passed up to the UI tier
some modifications are made to the object
the object is passed back down to the business logic tier
the application persists these modifications by calling update() in a second session
saveOrUpdate() does the following:
if the object is already persistent in this session, do nothing
if another object associated with the session has the same identifier, throw an exception
if the object has no identifier property, save() it
if the object's identifier has the value assigned to a newly instantiated object, save() it
if the object is versioned (by a <version></version>or <timestamp></timestamp>), and the version property value is the same value assigned to a newly instantiated object, save() it
otherwise update() the object
and merge() is very different:
if there is a persistent instance with the same identifier currently associated with the session, copy the state of the given object onto the persistent instance
if there is no persistent instance currently associated with the session, try to load it from the database, or create a new persistent instance
the persistent instance is returned
the given instance does not become associated with the session, it remains detached |
相关推荐
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用层和数据持久化层发挥着关键作用。Spring是一个全面的Java企业级应用开发框架,而Hibernate则是一个优秀的对象关系映射(ORM)工具,它简化了...
例如,我们可以通过Hibernate的Session接口来执行CRUD操作:创建(save或saveOrUpdate)、读取(get或load)、更新(update或merge)和删除(delete)。 具体到增删改查的实现: 1. **增加**(Create):当用户...
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别专注于IoC(Inversion of Control,控制反转)和ORM(Object-Relational Mapping,对象关系映射)。本示例是关于如何将这两个框架集成在一起,实现...
在IT行业中,Spring、Hibernate和Struts是三个非常重要的开源框架,它们分别专注于不同层面的软件开发。Spring是一个全面的后端应用框架,提供依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented...
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
### Struts2 + Spring + Hibernate 实现数据增删改查详解 #### 一、概述 在Web开发领域,Struts2、Spring与Hibernate是三种非常流行的技术,它们常常被组合在一起形成一个强大的开发框架,简称“SSH”(Struts2 + ...
在Java Web开发中,Struts、Spring和Hibernate是最常见的三大框架,它们...以上就是关于Struts、Spring和Hibernate面试题的详细解析,涵盖了这三大框架的关键概念和使用技巧,对于理解和解答相关面试问题非常有帮助。
在CRUD操作中,Hibernate提供了Session接口,用于与数据库进行交互,例如保存(save或saveOrUpdate)、加载(load或get)、更新(update)和删除(delete)对象。 在整合这三个框架时,通常会使用Spring的...
在IT行业中,Spring MVC、Spring和Hibernate是三个非常重要的开源框架,它们分别负责Web应用程序的模型-视图-控制器(MVC)架构、依赖注入(DI)与面向切面编程(AOP)、以及对象关系映射(ORM)。将这三个框架进行...
标题和描述指向的是一个关于Struts、Spring和Hibernate技术栈的面试题集合,这份文档旨在帮助准备面试的软件工程师理解并复习这些关键技术点。以下是基于给定内容的关键知识点的详细阐述: ### 1. Action的线程安全...
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们在企业级应用开发中扮演着核心角色。Spring是一个全面的Java应用程序框架,它提供了一个用于管理对象依赖关系的容器,简化了编程模型,而Hibernate则是一个...
### Struts + Spring + Hibernate 笔试题解析 #### 一、Struts 流程与特性 **Struts1 的流程:** 1. **初始化:** 首先加载配置文件 `struts-config.xml`,创建核心控制器 `ActionServlet`。 2. **请求处理:** ...
### Struts + Spring + Hibernate 面试题解析 #### 1. AOP 和 IOC 的概念以及在 Spring 中...以上内容涵盖了 Struts、Spring 和 Hibernate 的基础知识及面试常见问题解答,希望能够帮助读者更好地理解和掌握这些技术。
9. Hibernate的`update()`和`saveOrUpdate()`方法:`update()`用于更新已存在的实体,而`saveOrUpdate()`根据对象状态判断是保存还是更新。如果对象有持久化标识且未持久化,或者具有版本信息表明是新实例,它会调用...
**Spring MVC + Hibernate 整合应用详解** Spring MVC 和 Hibernate 是两种非常流行的开源框架,它们在 Java Web 开发中有着广泛的应用。Spring MVC 作为 Spring 框架的一部分,负责处理 Web 请求,提供模型-视图-...
### Spring + Struts + Hibernate 面试题解析 #### 一、Struts 相关面试题 **1. Action 是否是线程安全的?如果不是,有什么方式可以保证 Action 的线程安全?如果是,请说明原因** - **Struts 1 中 Action 的...
在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring主要用于依赖注入和管理对象,而Hibernate则是一个优秀的持久层框架,它简化了数据库操作。本教程将深入探讨Spring和Hibernate结合使用时的一对...
Struts2 Action根据请求参数找到对应的实体,更新其属性,然后调用Hibernate的Session.saveOrUpdate()方法保存更改。 4. **删除(Delete)**: 用户选择要删除的记录,发送请求到服务器。Struts2 Action根据ID查找...
这个过程通常涉及对象的持久化,即调用Hibernate的save()或saveOrUpdate()方法。 2. 读取(Read):根据ID或其他条件查询数据,通常使用Session的get()或load(),或者Criteria或HQL语句来实现。 3. 更新(Update):...
例如,使用`save()`或`saveOrUpdate()`添加数据,`update()`更新,`delete()`删除,`load()`或`get()`查询。 - **HQL**:Hibernate提供了一种面向对象的查询语言HQL,类似于SQL,但操作的是对象而非表。 3. **结合...