会话
编辑教程会话
Session 用于获取与数据库的物理连接。 Session 对象是轻量级的,并且设计为在每次需要与数据库进行交互时被实例化。持久态对象被保存,并通过 Session 对象检索找回。
该 Session 对象不应该长时间保持开放状态,因为它们通常不能保证线程安全,而应该根据需求被创建和销毁。
Session 的主要功能是为映射实体类的实例提供创建,读取和删除操作。这些实例可能在给定时间点时存在于以下三种状态之一:
瞬时状态 | 一种新的持久性实例,被 Hibernate 认为是瞬时的, 它不与 Session 相关联,在数据库中没有与之关联的记录且无标识符值。 |
---|---|
持久状态 | 可以将一个瞬时状态实例通过与一个 Session 关联的方式将其转化为持久状态实例。 持久状态实例在数据库中没有与之关联的记录,有标识符值,并与一个 Session 关联。 |
脱管状态 | 一旦关闭 Hibernate Session,持久状态实例将会成为脱管状态实例。 |
若 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 引发异常,则事务必须被回滚,该 session 必须被丢弃。
Session 接口方法
Session 接口提供了很多方法,但在以下讲解中我将仅列出几个我们会在本教程中应用的重要方法。您可以查看 Hibernate 文件,查询与 Session 及 SessionFactory 相关的完整方法目录。
Session 方法 | 说明 |
---|---|
Transaction beginTransaction() | 开始工作单位,并返回关联事务对象。 |
void cancelQuery() | 取消当前的查询执行。 |
void clear() | 完全清除该会话。 |
Connection close() | 通过释放和清理 JDBC 连接以结束该会话。 |
Criteria createCriteria(Class persistentClass) | 为给定的实体类或实体类的超类创建一个新的 Criteria 实例。 |
Criteria createCriteria(String entityName) | 为给定的实体名称创建一个新的 Criteria 实例。 |
Serializable getIdentifier(Object object) | 返回与给定实体相关联的会话的标识符值。 |
Query createFilter(Object collection, String queryString) | 为给定的集合和过滤字符创建查询的新实例。 |
Query createQuery(String queryString) | 为给定的 HQL 查询字符创建查询的新实例。 |
SQLQuery createSQLQuery(String queryString) | 为给定的 SQL 查询字符串创建 SQLQuery 的新实例。 |
void delete(Object object) | 从数据存储中删除持久化实例。 |
void delete(String entityName, Object object) | 从数据存储中删除持久化实例。 |
Session get(String entityName, Serializable id) | 返回给定命名的且带有给定标识符或 null 的持久化实例(若无该种持久化实例)。 |
SessionFactory getSessionFactory() | 获取创建该会话的 session 工厂。 |
void refresh(Object object) | 从基本数据库中重新读取给定实例的状态。 |
Transaction getTransaction() | 获取与该 session 关联的事务实例。 |
boolean isConnected() | 检查当前 session 是否连接。 |
boolean isDirty() | 该 session 中是否包含必须与数据库同步的变化? |
boolean isOpen() | 检查该 session 是否仍处于开启状态。 |
Serializable save(Object object) | 先分配一个生成的标识,以保持给定的瞬时状态实例。 |
void saveOrUpdate(Object object) | 保存(对象)或更新(对象)给定的实例。 |
void update(Object object) | 更新带有标识符且是给定的处于脱管状态的实例的持久化实例。 |
void update(String entityName, Object object) | 更新带有标识符且是给定的处于脱管状态的实例的持久化实例。 |
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟