`
- 浏览:
144715 次
- 性别:
- 来自:
上海
-
hibernate session中的load方法返回的一个POJO的代理对象,只有在访问其field时才进行实际的数据装载(向数据库发出一条select查询),如果该通过getter方法来访问其field值,但是session已经close,将抛出延迟初始化的异常。如果load加载的是一条不存在的数据,在该entity的field访问时,将抛出ObjectNotFoundException的异常。
对于session中的get方法,将会实时返回一个实际的POJO对象,而不是load中返回的代理对象。调用get时将立即发出select查询。对于不存在的数据记录,get将返回一个null值,在调用其方法时将产生NullPointerException。
hibernate session中的update方法用来更新对应的pojo对象到数据库中。update方法可以更新一个detached对象,前提条件是该detached对象必须包含id值,并且该update会更新该pojo对象中所有的值到数据库中(根据hbm文件中的配置)。update方法同时也可以更新一个persistence对象到数据库中,如果pojo对象已经是persistence对象(也就是已经存在于session的cache中),进行更新操作只需设置为对应的field值,甚至不需要调用update方法,在session关闭时会自动同步到数据库中。
hibernate中对于merge操作同样能达到持久化的目的,那么他和update方法有什么区别呢?merge方法在进行更新操作时,会首先判断该pojo对象是否是一个persistence对象,如果不是,那么他会首先根据id发出一条select查询,并将查询出的新对象加入到session的cache中,纳入session的生命周期管理中,然后再根据变化进行update。
对于update一个detached对象将导致的全盘update,就是所有在xml配置中的列都将进行update。可以通过在xml的class元素上设置dynamic-update属性和merge方法来避免所有列的update。merge由于merge方法将自动发出一条select查询来将detached对象纳入session的管理,所有对于大批量的操作可能将产生性能问题。建议使用update query来进行部分列的更新。这种特性在hibernate 3.3中才被加入到hibernate中。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...
Session session=HibernateSessionFactory.getSession(); String sql=”from Usertable as user where user.username=?”; Query q=session.createQuery(sql); q.setString(0,username); List l=q.list(); Iterator...
在Java世界中,尤其是在持久化框架Hibernate中,处理Clob类型的数据需要特别的方法和配置。 在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob...
首先,Hibernate框架的核心接口包括Session、SessionFactory、Configuration、Transaction以及Query和Criteria接口。这些接口构成了Hibernate框架的基础,并为开发人员提供了丰富的数据库操作能力。 - Session接口...
本文详细介绍了Hibernate框架中的核心配置文件`hibernate.cfg.xml`及其配置项、映射文件`xxx.hbm.xml`,以及核心API如Configuration和SessionFactory的使用方法,并对C3P0连接池进行了简要说明。通过这些内容的学习...
### Hibernate小结 #### 一、概述 在本篇文章中,我们将对Hibernate框架进行一个较为全面的小结。主要内容包括:Hibernate映射中的Lazy加载策略、Hibernate查询语言(HQL)的使用方法,以及一些基本配置与操作技巧...
在Spring中,配置Hibernate的SessionFactory是至关重要的,因为它负责创建和管理与数据库交互的Session实例。有两种常见的配置方式: (1)使用配置文件和独立的Bean配置: 在这种方式下,`...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
#### 六、小结 通过本文对 Hibernate 中常用方法的详细介绍,我们可以更好地理解和掌握 Hibernate 的工作原理及使用技巧。不同的方法适用于不同的场景,在实际开发过程中,根据具体需求选择合适的方法非常重要。...
1.3 小结 19 1.4 思考题 19 第2章 Java对象持久化技术概述 21 业务数据在内存中表现为实体域对象形式,而在关系数据库中表现为关系数据形式。数据访问代码负责把实体域对象持久化到关系数据库中。 2.1 直接通过...
可以使用`session.save()`或`session.update()`方法,但在实际使用中,我们通常需要使用`session.merge()`,因为它能更好地处理持久化状态的变化。 4. **读取数据**:从数据库中检索Clob数据时,可以像处理普通属性...
1.5 小结 第2章 启动项目 2.1 启动Hibernate项目 2.1.1 选择开发过程 2.1.2 建立项目 2.1.3 Hibernate配置和启动 2.1.4 运行和测试应用程序 2.2 启动Java Persistence项目 2.2.1 ...
1.3 本章小结 这一章主要介绍了Hibernate的基本概念和使用方法,包括配置、查询、缓存和事务管理。掌握这些基础,将为后续深入学习和应用Hibernate打下坚实的基础。 1.4 思考与练习 这部分通常会提出一些问题,如...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...