目录

休眠 - 配置( Configuration)

会话用于获取与数据库的物理连接。 Session对象是轻量级的,旨在每次与数据库进行交互时进行实例化。 持久对象通过Session对象保存和检索。

会话对象不应该长时间保持打开状态,因为它们通常不是线程安全的,应该根据需要创建和销毁它们。 Session的主要功能是为映射实体类的实例提供,创建,读取和删除操作。

在给定时间点,实例可能存在以下三种状态之一 -

  • transient - 持久化类的新实例,它与Session无关,在数据库中没有任何表示,Hibernate认为没有标识符值是瞬态的。

  • persistent - 您可以通过将瞬态实例与Session相关联来使其持久化。 持久化实例在数据库中具有表示,标识符值并与会话相关联。

  • detached - 一旦我们关闭Hibernate Session,持久化实例将成为一个分离的实例。

如果Session实例的持久化类是可序列化的,则它是可序列化的。 典型的交易应使用以下习语 -

Session session = factory.openSession();
Transaction tx = null;
try {
   tx = session.beginTransaction();
   // do some work
   ...
   tx.commit();
}
catch (Exception e) {
   if (tx!=null) tx.rollback();
   e.printStackTrace(); 
} finally {
   session.close();
}

如果会话抛出异常,则必须回滚事务并且必须丢弃该会话。

会话接口方法

Session接口提供了许多方法,但我将仅列出一些重要的方法,我们将在本教程中使用它们。 您可以查看Hibernate文档以获取与SessionSessionFactory相关的方法的完整列表。

Sr.No. 会话方法和描述
1

Transaction beginTransaction()

开始一个工作单元并返回关联的Transaction对象。

2

void cancelQuery()

取消当前查询的执行。

3

void clear()

完全清除会话。

4

Connection close()

通过释放JDBC连接并清理来结束会话。

5

Criteria createCriteria(Class persistentClass)

为给定的实体类或实体类的超类创建新的Criteria实例。

6

Criteria createCriteria(String entityName)

为给定的实体名称创建新的Criteria实例。

7

Serializable getIdentifier(Object object)

返回与此会话关联的给定实体的标识符值。

8

Query createFilter(Object collection, String queryString)

为给定的集合和过滤器字符串创建一个新的Query实例。

9

Query createQuery(String queryString)

为给定的HQL查询字符串创建Query的新实例。

10

SQLQuery createSQLQuery(String queryString)

为给定的SQL查询字符串创建SQLQuery的新实例。

11

void delete(Object object)

从数据存储中删除持久性实例。

12

void delete(String entityName, Object object)

从数据存储中删除持久性实例。

13

Session get(String entityName, Serializable id)

使用给定标识符返回给定命名实体的持久实例,如果没有此类持久实例,则返回null。

14

SessionFactory getSessionFactory()

获取创建此会话的会话工厂。

15

void refresh(Object object)

从底层数据库重新读取给定实例的状态。

16

Transaction getTransaction()

获取与此会话关联的Transaction实例。

17

boolean isConnected()

检查会话当前是否已连接。

18

boolean isDirty()

此会话是否包含必须与数据库同步的任何更改?

19

boolean isOpen()

检查会话是否仍处于打开状态。

20

Serializable save(Object object)

保留给定的瞬态实例,首先分配生成的标识符。

21

void saveOrUpdate(Object object)

保存(Object)或更新(Object)给定实例。

22

void update(Object object)

使用给定分离实例的标识符更新持久性实例。

23

void update(String entityName, Object object)

使用给定分离实例的标识符更新持久性实例。

↑回到顶部↑
WIKI教程 @2018