Java应用程序与Hibernate之间的主要运行时接口。它是抽象了持久化服务概念的核心抽象API类。
Session的生命周期绑定在一个物理的事务(tansaction)上面。(长的事务可能跨越多个数据库事物。)
Session的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:
自由状态(transient): 不曾进行持久化,未与任何Session相关联
持久化状态(persistent): 仅与一个Session相关联
游离状态(detached): 已经进行过持久化,但当前未与任何Session相关联
游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。
持久化实例可以通过调用 delete()变成游离状态。
通过get()或load()方法得到的实例都是持久化状态的。
游离状态的实例可以通过调用 update()、0saveOrUpdate()、lock()或者replicate()进行持久化。
游离或者自由状态下的实例可以通过调用merge()方法成为一个新的持久化实例。
save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE,而update()或merge()会引发SQLUPDATE。
对持久化(persistent)实例的修改在刷新提交的时候会被检测到,它也会引起SQLUPDATE。
saveOrUpdate()或者replicate()会引发SQLINSERT或者UPDATE。
以下是通过Hibernate3.0执行批量更新的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
以下是通过Hibernate3.0执行批量删除的程序代码:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();
分享到:
相关推荐
然而,在使用 Hibernate 进行数据库操作时,经常会遇到 "No Hibernate Session bound to thread" 的错误信息。本文将详细介绍该错误的解决方案。 错误原因 "No Hibernate Session bound to thread" 错误信息通常是...
nosession模式并不意味着完全不使用Hibernate,而是尽量减少对Session的依赖,转而使用其他API,例如Query或Criteria API来执行数据库查询。 在实际的代码案例中,我们可以利用SessionFactory的openSession()方法来...
在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...
本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...
Hibernate Session的生命周期通常包括打开、使用和关闭三个阶段。在应用中,一个Session实例通常对应于一个数据库会话,用于执行数据库操作,如查询、保存、更新或删除实体。Session的创建通常通过SessionFactory...
总结来说,Hibernate简化了Java应用与数据库之间的交互,通过`SessionFactory`和`Session`的使用,我们可以方便地进行数据操作,而无需关注底层的SQL细节。学习并熟练掌握Hibernate和Session,对于提升Java开发的...
我们可以使用Session的beginTransaction()方法开始一个事务,commitTransaction()提交事务,rollbackTransaction()回滚事务。事务处理保证了数据的一致性和完整性。 4. **持久化操作**:Session提供了增删改查...
1. **事务管理**:在执行一系列数据库操作时,我们可以使用`Session`的`beginTransaction()`和`commit()`方法开启和提交事务。为了确保数据一致性,我们需要在发生异常时回滚事务,这可以通过`Session`的`rollback()...
重写Session主要是继承Hibernate的DefaultSessionImpl或者BaseSessionImpl,并覆盖其中的方法,比如在save()、update()、delete()之前或之后添加自定义代码。此外,也可以扩展query()方法来实现更复杂的查询逻辑。 ...
在Hibernate框架中,Session是与数据库交互的主要接口,它负责对象的持久化操作。然而,由于Session不是线程安全的,所以在多线程环境中管理Session就需要特别注意。本篇文章将详细探讨Hibernate中Session的管理,...
总的来说,`Session`在Hibernate中扮演着至关重要的角色,`delete()`方法是它实现对象持久化操作的一部分,正确理解和使用这些方法对于高效地操作数据库至关重要。理解`Session`的工作原理,以及与`SessionFactory`...
在开发中,使用Hibernate的`Session`和`Transaction`能够有效提升开发效率,同时确保数据操作的正确性和一致性。熟练掌握这两者,对于理解和优化Hibernate应用程序至关重要。通过不断的实践和学习,我们可以更好地...
本教程聚焦于使用Hibernate进行数据操作,并通过XML文件来配置数据库连接和对象-关系映射。 首先,我们要理解数据库连接配置在Hibernate中的重要性。XML文件,通常命名为`hibernate.cfg.xml`,在这个文件中,我们会...
在开始使用Session之前,需要配置Hibernate的环境,包括创建SessionFactory,这是整个应用与数据库交互的工厂。SessionFactory由Configuration实例创建,配置文件通常为`hibernate.cfg.xml`,其中包含了数据库连接...
`Session`提供了在数据库中保存、更新和删除对象的方法,同时也负责加载或检索对象。它具有事务管理功能,并且实现了对数据库的脏检查(dirty-checking)和缓存机制。创建`Session`对象时通常通过`SessionFactory`,...
通过以上介绍,我们可以看到Hibernate Session在数据库操作中的核心地位,正确理解和使用Session是掌握Hibernate的关键。实践中的具体应用需要结合项目需求,灵活运用这些知识,以实现高效、稳定的数据库访问。
`Session.flush()`方法是一个关键的操作,它强制Hibernate将内存中的对象状态同步到数据库,确保数据的一致性。这篇博客深入探讨了`Session.flush()`的工作原理和应用场景。 `Session`在Hibernate中主要有以下职责...
在第二个 Session 中,我们使用相同的 ID 从数据库中获取了一个 Students 对象,并使用 merge 方法将第一个 Session 中的对象数据赋值给第二个 Session 中的对象。 需要注意的是,在使用 merge 方法时,我们需要...
### Hibernate的核心接口——Session详解 #### 一、Session简述 **1. Session概念** - **定义**: Session 是 Hibernate ...理解 Session 的工作原理及其与对象生命周期之间的关系对于有效使用 Hibernate 至关重要。
在Java编程中,Hibernate是一个非常流行的ORM(对象关系...通过以上步骤,你可以理解并实现Hibernate在Java应用中手动获取Session的方法。学习和熟练掌握这些知识,将有助于提高你在数据库操作方面的效率和代码质量。