翻译的Hibernate的Session的javadoc

org.hibernate
Interface Session<o:p></o:p>

All Superinterfaces: <o:p></o:p>

Serializable<o:p></o:p>

All Known Subinterfaces: <o:p></o:p>

EventSource, Session<o:p></o:p>

All Known Implementing Classes: <o:p></o:p>

SessionImpl<o:p></o:p>


public interface Session <o:p></o:p>

extends Serializable<o:p></o:p>

Java应用程序与Hibernate之间的主要运行时接口。它是抽象了持久化服务概念的核心抽象API类。
Session
的生命周期绑定在一个物理的事务(tansaction)上面。(长的事务可能跨越多个数据库事物。)
Session
的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:<o:p></o:p>

自由状态(transient: 不曾进行持久化,未与任何Session相关联
持久化状态(persistent: 仅与一个Session相关联
游离状态(detached: 已经进行过持久化,但当前未与任何Session相关联<o:p></o:p>

游离状态的实例可以通过调用save()persist()或者saveOrUpdate()方法进行持久化。持久化实例可以通过调用 delete()变成游离状态。通过get()load()方法得到的实例都是持久化状态的。游离状态的实例可以通过调用 update()0saveOrUpdate()lock()或者replicate()进行持久化。游离或者自由状态下的实例可以通过调用merge()方法成为一个新的持久化实例。

save()
persist()将会引发SQLINSERTdelete()会引发SQLDELETE,而update()merge()会引发SQLUPDATE。对持久化(persistent实例的修改在刷新提交的时候会被检测到,它也会引起SQLUPDATEsaveOrUpdate()或者replicate()会引发SQLINSERT或者UPDATE

其具体实现并不一定是线程安全的。每个线程/事务应该从一个SessionFactory获取自己的session实例。

如果其持久化对象类是可序列化的,则Session实例也是可序列化的。

一个典型的事务应该使用下面的形式: <o:p></o:p>

 Session sess = factory.openSession();<o:p></o:p>

 Transaction tx;<o:p></o:p>

 try {<o:p></o:p>

     tx = sess.beginTransaction();<o:p></o:p>

     //do some work<o:p></o:p>

     ...<o:p></o:p>

     tx.commit();<o:p></o:p>

 }<o:p></o:p>

 catch (Exception e) {<o:p></o:p>

     if (tx!=null) tx.rollback();<o:p></o:p>

     throw e;<o:p></o:p>

 }<o:p></o:p>

 finally {<o:p></o:p>

     sess.close();<o:p></o:p>

 }<o:p></o:p>

 
如果Session抛出了异常, 事务必须回滚而session会被废弃。在异常发生后Session的内部状态可能会与数据库失去同步。 <o:p></o:p>

Author: <o:p></o:p>

Gavin King <o:p></o:p>

See Also: <o:p></o:p>

SessionFactory<o:p></o:p>


Method Summary<o:p></o:p>

 Transaction<o:p></o:p>

beginTransaction()
          
开始一个工作单元并且返回相关联的事务(Transaction)对象。 <o:p></o:p>

 void<o:p></o:p>

cancelQuery()
          
终止执行当前查询。<o:p></o:p>

 void<o:p></o:p>

clear()
          
完整的清除这个session<o:p></o:p>

 Connection<o:p></o:p>

close()
          
停止这个Session,通过中断JDBC连接并且清空(cleaning up)它。<o:p></o:p>

 Connection<o:p></o:p>

connection()
          
获取这个SessionJDBC连接。

如果这个session使用了积极的collection释放策略(如CMT-容器控制事务的环境下),关闭这个调用的连接的职责应该由当前应用程序负责。 <o:p></o:p>

 boolean<o:p></o:p>

contains(Object object)
          
检查这个对象实例是否与当前的Session关联(即是否为Persistent状态)。<o:p></o:p>

 Criteria<o:p></o:p>

createCriteria(Class persistentClass)
          
为给定的实体类或它的超类创建一个新的Criteria实例。<o:p></o:p>

 Criteria<o:p></o:p>

createCriteria(Class persistentClass, String alias)
          
根据给定的实体类或者它的超类创建一个新的Criteria实例,并赋予它(实体类)一个别名。<o:p></o:p>

 Criteria<o:p></o:p>

createCriteria(String entityName)
          
根据给定的实体的名称(name),创建一个新的Criteria实例。<o:p></o:p>

 Criteria<o:p></o:p>

createCriteria(String entityName, String alias)
          
根据给定的实体的名称(name),创建一个新的Criteria实例,并赋予它(实体类)一个别名<o:p></o:p>

 Query<o:p></o:p>

createFilter(Object collection, String queryString)
          
根据给定的collection和过滤字符串(查询条件)创建一个新的Query实例。<o:p></o:p>

 Query<o:p></o:p>

createQuery(String queryString)
          
根据给定的HQL查询条件创建一个新的Query实例。<o:p></o:p>

 SQLQuery<o:p></o:p>

createSQLQuery(String queryString)
          
根据给定的SQL查询条件创建一个新的SQLQuery实例。<o:p></o:p>

 void<o:p></o:p>

delete(Object object)
          
从数据库中移除持久化(persistent)对象的实例。<o:p></o:p>

 void<o:p></o:p>

delete(String entityName, Object object)
          
从数据库中移除持久化(persistent)对象的实例。<o:p></o:p>

 void<o:p></o:p>

disableFilter(String filterName)
          
禁用当前session的名称过滤器。<o:p></o:p>

 Connection<o:p></o:p>

disconnect()
          
断开Session与当前的JDBC连接。<o:p></o:p>

 Filter<o:p></o:p>

enableFilter(String filterName)
          
打开当前session的名称过滤器。<o:p></o:p>

 void<o:p></o:p>

evict(Object object)
          
将当前对象实例从session缓存中清除。<o:p></o:p>

 void<o:p></o:p>

flush()
          
强制提交刷新(flushSession<o:p></o:p>

 Object<o:p></o:p>

get(Class clazz, Serializable id)
          
根据给定标识和实体类返回持久化对象的实例,如果没有符合条件的持久化对象实例则返回null<o:p></o:p>

 Object<o:p></o:p>

get(Class clazz, Serializable id, LockMode lockMode)
          
根据给定标识和实体类返回持久化对象的实例,如果没有符合条件的持久化对象实例则返回null<o:p></o:p>

你可能感兴趣的:(sql,Hibernate,jdbc,UP)