org.hibernate
Interface Session
All Superinterfaces:
Serializable
All Known Subinterfaces:
EventSource, Session
All Known Implementing Classes:
SessionImpl
public interface Session
extends Serializable
Java应用程序与Hibernate之间的主要运行时接口。它是抽象了持久化服务概念的核心抽象API类。
Session的生命周期绑定在一个物理的事务(tansaction)上面。(长的事务可能跨越多个数据库事物。)
Session的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:
自由状态(transient): 不曾进行持久化,未与任何Session相关联
持久化状态(persistent): 仅与一个Session相关联
游离状态(detached): 已经进行过持久化,但当前未与任何Session相关联
游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。
持久化实例可以通过调用 delete()变成游状态。
通过get()或load()方法得到的实例都是持久化状态的。游离状态的实例可以通过调用 update()、saveOrUpdate()、lock() 或者 replicate()进行持久化。
游离或者自由状态下的实例可以通过调用merge()方法成为一个新的持久化实例。
save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE,而update()或merge()会引发SQLUPDATE。
对持久化(persistent)实例的修改在刷新提交的时候会被检测到,它也会引起SQLUPDATE。saveOrUpdate()或者replicate()会引发SQLINSERT或者
UPDATE。
其具体实现并不一定是线程安全的。每个线程/事务应该从一个SessionFactory获取自己的session实例。
如果其持久化对象类是可序列化的,则Session实例也是可序列化的。
一个典型的事务应该使用下面的形式:
Session sess = factory.openSession();
Transaction tx;
try {
tx = sess.beginTransaction();
//do some work
...
tx.commit();
}
catch (Exception e) {
if (tx!=null) tx.rollback();
throw e;
}
finally {
sess.close();
}
如果Session抛出了异常, 事务必须回滚而session会被废弃。在异常发生后Session的内部状态可能会与数据库失去同步。
Author:
Gavin King
See Also:
SessionFactory
<!----><!----><!----><!----><!---->
Method Summary
Transaction beginTransaction() //返回一个
开始一个工作单元并且返回相关联的事务(Transaction)对象。
void cancelQuery()
终止执行当前查询。
void clear()
完整的清除这个session。
Connection close()
停止这个Session,通过中断JDBC连接并且清空(cleaning up)它。
Connection connection()
获取这个Session的JDBC连接。
如果这个session使用了积极的collection释放策略(如CMT-容器控制事务的环境下),关闭这个调用的连接的职责应该由当前应用程序负责
boolean contains(Object object)
检查这个对象实例是否与当前的Session关联(即是否为Persistent状态)。
Criteria createCriteria(Class persistentClass)
为给定的实体类或它的超类创建一个新的Criteria实例。
Criteria createCriteria(Class persistentClass, String alias)
根据给定的实体类或者它的超类创建一个新的Criteria实例,并赋予它(实体类)一个别名。
Criteria createCriteria(String entityName)
根据给定的实体的名称(name),创建一个新的Criteria实例。
Criteria createCriteria(String entityName, String alias)
根据给定的实体的名称(name),创建一个新的Criteria实例,并赋予它(实体类)一个别名
Query createFilter(Object collection, String queryString)
根据给定的collection和过滤字符串(查询条件)创建一个新的Query实例。
Query createQuery(String queryString)
根据给定的HQL查询条件创建一个新的Query实例。
SQLQuery createSQLQuery(String queryString)
根据给定的SQL查询条件创建一个新的SQLQuery实例。
void delete(Object object)
从数据库中移除持久化(persistent)对象的实例。
void delete(String entityName, Object object)
从数据库中移除持久化(persistent)对象的实例。
void disableFilter(String filterName)
禁用当前session的名称过滤器。
Connection disconnect()
断开Session与当前的JDBC连接。
Filter enableFilter(String filterName)
打开当前session的名称过滤器。
void evict(Object object)
将当前对象实例从session缓存中清除。
void flush()
强制提交刷新(flush)Session。
Object get(Class clazz, Serializable id)
根据给定标识和实体类返回持久化对象的实例,如果没有符合条件的持久化对象实例则返null。
Object get(Class clazz, Serializable id, LockMode lockMode)
根据给定标识和实体类返回持久化对象的实例,如果没有符合条件的持久化对象实例则返null。
Object get(String entityName, Serializable id)
返回与给定的实体命名和标识匹配的持久化实例,如果没有对应的持久化实例则返回null。
Object get(String entityName, Serializable id, LockMode lockMode)
返回与给定的实体类和标识所匹配的持久化实例,如果没有对应的持久化实例则返回null。
CacheMode getCacheMode()
得到当前的缓存模式。
LockMode getCurrentLockMode(Object object)
检测给定对象当前的锁定级别。
Filter getEnabledFilter(String filterName)
根据名称获取一个当前允许的过滤器(filter)。
EntityMode getEntityMode()
获取这个session有效的实体模式。
String getEntityName(Object object)
返回一个持久化对象的实体名称。
FlushMode getFlushMode()
获得当前的刷新提交(flush)模式。
Serializable getIdentifier(Object object)
获取给定的实体对象实例在Session的缓存中的标识,如果该实例是自由状态(Transient)的或者与其它Session关联则抛出一个异常。
Query getNamedQuery(String queryName)
从映射文件中根据给定的查询的名称字符串获取一个Query(查询)实例。
Session getSession(EntityMode entityMode)
根据给定的实体模式(Entity Mode)开始一个新的有效的Session。
SessionFactory getSessionFactory()
获取创建这个session的SessionFactory实例。
SessionStatistics getStatistics()
获取这个session的统计信息。
Transaction getTransaction()
获取与这个session关联的Transaction(事务)实例。 instance associated with this session.
boolean isConnected()
检查当前Session是否处于连接状态。
boolean isDirty()
当前Session是否包含需要与数据库同步的(数据状态)变化 ?如果我们刷新提交(flush)这个session是否会有SQL执行?
boolean isOpen()
检查当前Session是否仍然打开。
Object load(Class theClass, Serializable id)
在符合条件的实例存在的情况下,根据给定的实体类和标识返回持久化状态的实例。
Object load(Class theClass, Serializable id, LockMode lockMode)
在符合条件的实例存在的情况下,根据给定的实体类、标识及指定的锁定等级返回持久化状态的实例。
void load(Object object, Serializable id)
将与给定的标示对应的持久化状态(值)复制到给定的自由状态(trasient)实例上。
Object load(String entityName, Serializable id)
在符合条件的实例存在的情况下,根据给定的实体类和标识返回持久化状态的实例。
Object load(String entityName, Serializable id, LockMode lockMode)
在符合条件的实例存在的情况下,根据给定的实体类、标识及指定的锁定等级返回持久化状态的实例。
void lock(Object object, LockMode lockMode)
从给定的对象上获取指定的锁定级别。
void lock(String entityName, Object object, LockMode lockMode)
从给定的对象上获取指定的锁定级别。
Object merge(Object object)
将给定的对象的状态复制到具有相同标识的持久化对象上。
Object merge(String entityName, Object object)
将给定的对象的状态复制到具有相同标识的持久化对象上。
void persist(Object object)
将一个自由状态(transient)的实例持久化。
void persist(String entityName, Object object)
将一个自由状态(transient)的实例持久化。
void reconnect()
不推荐的。 手工的重新连接只应用于应用程序提供连接的情况,在这种情况下或许应该使用reconnect(java.sql.Connection)。
void reconnect(Connection connection)
重新连接到给定的JDBC连接。
void refresh(Object object)
从数据库中重新读取给定实例的状态。
void refresh(Object object, LockMode lockMode)
根据指定的锁定模式(LockMode),从数据库中重新读取给定实例的状态。
void replicate(Object object, ReplicationMode replicationMode)
使用当前的标识值持久化给定的游离状态(Transient)的实体。
void replicate(String entityName, Object object, ReplicationMode replicationMode)
使用当前的标识值持久化给定的游离状态(Transient)的实体。
Serializable save(Object object)
首先为给定的自由状态(Transient)的对象(根据配置)生成一个标识并赋值,然后将其持久化。
Serializable save(String entityName, Object object)
首先为给定的自由状态(Transient)的对象(根据配置)生成一个标识并赋值,然后将其持久化。
void saveOrUpdate(Object object)
根据给定的实例的标识属性的值(注:可以指定unsaved-value。一般默认null。)来决定执行 save() 或update()操作。
void saveOrUpdate(String entityName, Object object)
根据给定的实例的标识属性的值(注:可以指定unsaved-value。一般默认null。)来决定执行 save() 或update()操作。
void setCacheMode(CacheMode cacheMode)
设置刷新提交模式。
void setFlushMode(FlushMode flushMode)
设置刷新提交模式。
void setReadOnly(Object entity, boolean readOnly)
将一个未经更改的持久化对象设置为只读模式,或者将一个只读对象标记为可以修改的模式。
void update(Object object)
根据给定的detached(游离状态)对象实例的标识更新对应的持久化实例。
void update(String entityName, Object object)
根据给定的detached(游离状态)对象实例的标识更新对应的持久化实例。
<!----><!---->
分享到:
相关推荐
包含翻译后的API文档:spring-session-1.3.5.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.session:spring-session:1.3.5.RELEASE; 标签:springframework、session、spring、中文...
包含翻译后的API文档:spring-session-data-redis-2.0.4.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.session:spring-session-data-redis:2.0.4.RELEASE; 标签:springframework、...
包含翻译后的API文档:spring-session-1.3.5.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework.session:spring-session:1.3.5.RELEASE; 标签:springframework、session、...
包含翻译后的API文档:spring-session-data-redis-2.0.4.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework.session:spring-session-data-redis:2.0.4.RELEASE; 标签:spring...
包含翻译后的API文档:spring-session-core-2.0.5.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework.session:spring-session-core:2.0.5.RELEASE; 标签:springframework、...
包含翻译后的API文档:spring-session-1.3.0.RELEASE-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.springframework.session,artifactId:spring-session,version:1.3.0.RELEASE 使用方法:...
- 中文文档内容是由软件翻译且未经校对,因此仅供参考。 - 用户可以自由转发文档内容,但必须保留原作者和出处信息,以尊重原作者的劳动成果。 开发者在使用Spring Session时应该留意文档的准确性,并在参考文档...
包含翻译后的API文档:spring-session-core-2.0.5.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.session:spring-session-core:2.0.5.RELEASE; 标签:springframework、session、...
session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。 session在WEB技术中占有非常重要的份量。由于网页是一...
包含翻译后的API文档:spring-session-1.3.0.RELEASE-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.springframework.session,artifactId:spring-session,version:1.3.0.RELEASE ...
Session Beans有两种模式:无状态Session Beans和有状态Session Beans。无状态Session Beans不保存任何关于客户端的信息,每次调用都是独立的;而有状态Session Beans则可以跟踪客户端的状态,为同一客户端的多次...
本文档是Jetspeed2 Deployer Guide的中文翻译,旨在帮助初学者理解如何部署和配置Jetspeed2的安全机制。 在Jetspeed2的安全部署配置中,有两个主要的认证策略:Permissions(权限)和Constraints(约束)。...
这份资源提供了Spring框架的源码,并附带有中文翻译和注释,这对于理解Spring的工作原理、优化代码以及进行二次开发具有极大的帮助。 首先,`overview.html`很可能是Spring源码的概述文档,它通常会提供框架的整体...
在"WebRTC API 中文翻译"中,我们可以了解到关于WebRTC的一系列关键接口和方法的中文解释,这对于中国开发者来说非常有价值,因为官方文档通常以英文为主,可能会造成理解上的困难。中文翻译虽然可能不是最权威的,...
这份已翻译成中文的TensorFlow文档涵盖了前三章,对于初学者以及希望深入理解其基本概念的开发者来说,是一份极其宝贵的资源。 第一章通常会介绍TensorFlow的基础概念。TensorFlow的核心是数据流图(Data Flow ...
"计算机专业外文翻译"涉及将计算机科学和技术领域的英文或其他外语文献、教程、代码、文档等准确地转换成中文,以便国内的专业人士能够理解和应用。这项工作需要深入理解计算机科学的基本概念、术语和技术细节,同时...
#### SDP:Session Description Protocol **Session Description Protocol (SDP)** 是一种用于描述多媒体会话(如音频、视频会议)的格式化文本协议。SDP 不仅限于特定的应用场景,而是适用于广泛的网络环境和应用...
**SIP协议中文版(翻译)** SIP(Session Initiation Protocol)协议是一种用于控制多媒体通信会话(如语音和视频通话)的信令协议。它最初由IETF(Internet Engineering Task Force)定义,并在RFC3261文档中详细...
接下来,每当处理请求时,Spring MVC会检查Session中的语言设置,从对应的资源文件中获取翻译文本,并将其注入到视图模型中。在JSP或HTML页面上,通过EL表达式或Thymeleaf等模板引擎引用这些翻译文本,从而实现页面...