用Hibernate肯定会频繁的用到session,下面就将Hibernate session中一些经常的用方法逐个的解释一下。
- Transaction beginTransact
开始一个工作单元并返回一个与之相关Transaction对象,最为事务的开始,通常在需要对数据库进行更改例如save,update或delete 时使用。在事务结束后需要调用Transaction的commit方法提交更改,该方法必须在Hibernate session关闭之前使用。
- void flush() void clear()
这两个方法通常在一起使用。由于Hibernate有缓存数据的功能,所以当我们要批量查询和批量插入时,会因为大量的缓存而导致内存溢出。所以我们可以 在执行批量插入时插入一定数目的数据后调用flush()提交插入,然后调用clear()清空当前Hibernate session内的所有缓存。批量查询同理
关闭Hibernate session,同时清空所有的缓存。
获取当前Hibernate session使用的JDBC connection。
- boolean contains(Object object)
返回boolean值,判断一个实例是否与当前Hibernate session保持关联,即为持久化状态。
- Query createQuery(String queryString)
返回一个给定HQL语句的Query对象。
- SQLQuery createSQLQuery(String queryString)
返回一个用于执行原生SQL语句的SQLQuery对象
- void delete(Object object)
删除与该对象关联的数据里内的一条记录。该对象可以是处于持久化状态也可以是处于瞬态但与数据库的记录有id联系。如果该对象的cascade属性为delete或all将会同时删除相关联的数据。
- void delete(String entityName, Object object)
这个和前面一个的区别是,前面是直接删除Object,这个是要这个Object必须是entityName的实例才删除,不然的话,就报HibernateException
断开与session与当前JDBC的连接,如果连接有Hibernate管理,则将连接送回连接池,否则将送回给程序本身。
- Object get(Class clazz, Serializable id)
根据指定的实体类以及实体id返回一个实体的实例。如果找不到记录则返回null
- Object get(String entityName, Serializable id)
同上,entity为实体的名字
- String getEntityName(Object object)
返回一个持久化类的实体名
- erializable getIdentifier(Object object)
返回一个被session缓存的实体实例的id
- Query getNamedQuery(String queryName)
返回一个在映射文件中定义的命名查询的query对象
- SessionFactory getSessionFactory()
获取生成当前session的SessionFactory
- Transaction getTransaction()
不说了,地球人都知道
- Object load(Class theClass, Serializable id)
- Object load(String entityName, Serializable id)
和get方法一个效果,不同的是load方法不是直接去数据库查询,而是在session里面创建了一个代理对象,当用到这个对象的时候,hibernate才会去数据库查询,当查询不到的时候就会报异常
- Serializable save(Object object)
将一个实体实例持久化,返回该持久化实例的id。在持久化之前必须手动或自动的指派id。
- void update(Object object)
执行步骤:
1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用 Session.flush)。
- void saveOrUpdate(Object object)
执行步骤:
1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
3. 根据unsaved-value判断对象是否处于未保存状态。
4. 如果对象未保存(Transient状态),则调用save方法保存对象。
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。
分享到:
相关推荐
- Session API:Hibernate的Session对象是操作数据库的基本单元,它支持begin、commit和rollback等事务操作。 - Transaction API:Hibernate的Transaction接口提供了更高级别的事务管理,可以用来控制事务的生命...
在这个“hibernate说明及demo的例子”中,我们将深入探讨Hibernate的核心概念和功能,并通过一个实际的示例来展示如何使用它。 一、Hibernate概述 Hibernate是一个强大的工具,它消除了JDBC代码的繁琐,提供了数据...
2. **Transaction管理**: Hibernate提供了一套事务处理机制,通过Session的beginTransaction、commit和rollback方法进行操作。 3. **缓存机制**: Hibernate支持一级缓存(Session级别的缓存)和二级缓存...
以上是对“hibernate说明文档”标题和描述中的关键知识点的详细介绍,旨在帮助读者深入了解Hibernate的工作原理及其应用场景。通过掌握这些核心概念和技术,开发者可以更加高效地使用Hibernate框架来处理复杂的...
【hibernate配置步骤操作说明】 在Java开发中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作。以下是如何在MyEclipse环境中配置Hibernate的详细步骤: 1. **安装MySQL数据库和工具** - ...
本篇将深入探讨Hibernate的核心概念、主要功能以及使用方法。 一、Hibernate概述 Hibernate是由 Gavin King 创建的,它实现了Java持久化模型,使得在Java应用中处理数据库变得更为简单。通过提供一种对象-关系映射...
在Dao层实现通用方法时,我们可以抽象出一个基类,包含一些常用的方法,如`queryByParams`,这个方法接受一个Map参数,键对应于HQL或Criteria查询中的参数名,值则是参数的实际值。这样,不同的查询只需要传入不同的...
**hibernate全套资料文档API及配置说明文档** 在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发人员使用面向对象的编程方式来操作数据库,从而降低了数据库操作的复杂性。这个压缩包...
在实际开发中,Hibernate 常与 Spring 框架一起使用,Spring 可以帮助管理 Hibernate 的 Session,实现依赖注入,并提供事务管理功能,使得代码更加简洁和易测试。 这份文档还涵盖了高级主题,如 Criteria API 的...
批量操作如批处理更新和删除可以提高性能,例如`Session.flush()`和`Session.clear()`方法用于控制批处理的界限。 **12. 高级特性** 包括懒加载(Lazy Loading)、集合的分页查询、子查询、连接查询、联合查询、一...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational...4. 说明:当执行完 21 行代码的时候,session 关闭了,该对象成为脱管状态的对象。 等等。
3. **Hibernate 中文API文档.chm**:这是Hibernate的中文API参考手册,对每个类、接口和方法的详细说明,对于查阅具体功能和方法的使用非常有帮助。 4. **Hibernate3.2.chm**:这个文件可能包含了Hibernate 3.2版本...
在Hibernate3.2版本中,该框架进一步提升了性能和稳定性,同时也引入了一些新的特性和改进。这份资料包含的中文说明将帮助开发者更好地理解和使用Hibernate3.2,而源码则提供了深入学习和研究的宝贵资源。 1. ...
Hibernate作为一款强大的ORM(对象关系映射)框架,提供了多种灵活的查询方式,其中`Example`查询是基于对象实例进行匹配查询的一种方法,它允许开发者通过提供一个实体类的实例来检索数据库中与该实例相似或相等的...
4. **示例**:可能包含一些简单的示例项目,用于演示如何配置和使用Hibernate,对于初学者来说是非常实用的学习资源。 5. **构建脚本**:如pom.xml文件(如果使用Maven),或者build.gradle文件(如果使用Gradle),...
15. 工具箱指南:Hibernate提供了许多工具类和实用方法来简化开发,这部分会介绍这些工具的使用方法。 16. 示例:父子关系:文档中会包含一个关于如何处理父子关系映射的例子,这是对象模型中常见的关系映射挑战。 ...
8. Android生命周期管理:确保在Activity或Fragment的生命周期方法中适当地管理Hibernate的Session。 通过分析和学习这个源代码,开发者可以了解到如何在Android应用中有效地整合Hibernate,从而提高数据库操作的...
5. **保存对象**:使用Session的save()或saveOrUpdate()方法,将对象持久化到数据库。这会导致Hibernate生成相应的INSERT SQL并执行。对象状态变为持久态(Persistent)。 6. **提交事务**:在所有操作完成后,需要...
在本文中,我们将深入探讨如何将Spring Boot框架与Hibernate ORM集成,特别是在不使用JPA(Java ...在chapter12-hibernate目录中,可能包含了更多关于这个主题的示例代码和详细说明,供读者进一步学习和参考。
4. **Transaction管理**:在Hibernate中,事务管理可以通过Session的beginTransaction()、commit()和rollback()方法实现。事务是数据库操作的基本单元,确保数据的一致性。 5. **Criteria查询**:除了传统的HQL...