??xml version="1.0" encoding="utf-8" standalone="yes"?>国产69精品久久久久99,亚洲人成免费网站,国产理论电影在线观看http://www.aygfsteel.com/lyndon/zh-cnFri, 20 Jun 2025 00:34:43 GMTFri, 20 Jun 2025 00:34:43 GMT60译的Hibernate的Session的javadochttp://www.aygfsteel.com/lyndon/archive/2006/04/07/39924.html博客java博客javaFri, 07 Apr 2006 14:04:00 GMThttp://www.aygfsteel.com/lyndon/archive/2006/04/07/39924.htmlhttp://www.aygfsteel.com/lyndon/comments/39924.htmlhttp://www.aygfsteel.com/lyndon/archive/2006/04/07/39924.html#Feedback0http://www.aygfsteel.com/lyndon/comments/commentRss/39924.htmlhttp://www.aygfsteel.com/lyndon/services/trackbacks/39924.html 译的Hibernate的Session的javadoc
Hibernate的透明持久化用h非常舒服Q有时甚臛_C数据库的存在。我w边的朋友经怼分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是q什么用的。而且关于实体对象的生命周期也有很多概念不清,分不清transient、persistent、detached的区别,只是知道PO、VOq样的通俗叫法。其实这些概念都很简单,Hibernate的javadoc写的都很清楚Q只需看看p明白。所以我׃些时间将Hibernate 3.1.2中session的javadoc部分译了一下,旨在让那些因为Hibernate的“透明”而忘C它基本概늚Z停下来再看看q些概念


org.hibernate
Interface Session

All Superinterfaces:
Serializable
All Known Subinterfaces:
EventSource, Session
All Known Implementing Classes:
SessionImpl

public interface Session
extends Serializable

Java应用E序与Hibernate之间的主要运行时接口。它是抽象了持久化服务概늚核心抽象APIcR?br />
Session的生命周期绑定在一个物理的事务QtansactionQ上面。(长的事务可能跨越多个数据库事物。)

Session的主要功能是提供Ҏ的实体cd例的创徏Q读取和删除操作。实例可能以下面三种状态存在:

自由状态(transientQ? 不曾q行持久化,未与MSession相关?br />持久化状态(persistentQ? 仅与一?tt>Session相关?br />游离状态(detachedQ? 已经q行q持久化Q但当前未与MSession相关?br />
游离状态的实例可以通过调用save()?tt>persist()或?tt>saveOrUpdate()Ҏq行持久化。持久化实例可以通过调用 delete()变成游离状态。通过get()?tt>load()Ҏ得到的实例都是持久化状态的。游ȝ态的实例可以通过调用 update()?saveOrUpdate()?tt>lock()或?tt>replicate()q行持久化。游L者自q态下的实例可以通过调用merge()Ҏ成ؓ一个新的持久化实例?br />
save()?tt>persist()会引发SQL?tt>INSERTQ?tt>delete()会引发SQLDELETEQ?tt>update()?tt>merge()会引发SQLUPDATE。对持久化(persistentQ?/i>实例的修改在h提交的时候会被检到Q它也会引vSQLUPDATE?tt>saveOrUpdate()或?tt>replicate()会引发SQLINSERT或?tt>UPDATE?br />
其具体实现ƈ不一定是U程安全的。每个线E?事务应该从一?tt>SessionFactory获取自己的session实例?br />
如果其持久化对象cL可序列化的,?tt>Session实例也是可序列化的?br />
一个典型的事务应该使用下面的Ş式:

 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会被废弃。在异常发生?tt>Session的内部状态可能会与数据库失去同步?

Author:
Gavin King
See Also:
SessionFactory


Method Summary
 TransactionbeginTransaction()
          开始一个工作单元ƈ且返回相兌?tt>事务QTransactionQ?/tt>对象?
 voidcancelQuery()
          l止执行当前查询?/td>
 voidclear()
          完整的清除这个session?/td>
 Connectionclose()
          停止q个SessionQ通过中断JDBCq接q且清空Qcleaning upQ它?/td>
 Connectionconnection()
          获取q个Session的JDBCq接?br />
如果q个session使用了积极的collection释放{略Q如CMT-容器控制事务的环境下Q,关闭q个调用的连接的职责应该由当前应用程序负责?
 booleancontains(Object object)
          查这个对象实例是否与当前?tt>Session兌Q即是否为Persistent状态)?/td>
 CriteriacreateCriteria(Class persistentClass)
          为给定的实体cL它的类创徏一个新?tt>Criteria实例?/td>
 CriteriacreateCriteria(Class persistentClass, String alias)
          Ҏl定的实体类或者它的超cdZ个新?tt>Criteria实例Qƈ赋予它(实体c)一个别名?/td>
 CriteriacreateCriteria(String entityName)
          Ҏl定的实体的名称QnameQ,创徏一个新?tt>Criteria实例?/td>
 CriteriacreateCriteria(String entityName, String alias)
          Ҏl定的实体的名称QnameQ,创徏一个新?tt>Criteria实例Qƈ赋予它(实体c)一个别?/td>
 QuerycreateFilter(Object collection, String queryString)
          Ҏl定的collection和过滤字W串Q查询条Ӟ创徏一个新?tt>Query实例?/td>
 QuerycreateQuery(String queryString)
          Ҏl定的HQL查询条g创徏一个新?tt>Query实例?/td>
 SQLQuerycreateSQLQuery(String queryString)
          Ҏl定的SQL查询条g创徏一个新?tt>SQLQuery实例?/td>
 voiddelete(Object object)
          从数据库中移除持久化QpersistentQ对象的实例?/td>
 voiddelete(String entityName, Object object)
          从数据库中移除持久化QpersistentQ对象的实例?/td>
 voiddisableFilter(String filterName)
          用当前session的名U过滤器?/td>
 Connectiondisconnect()
          断开Session与当前的JDBCq接?/td>
 FilterenableFilter(String filterName)
          打开当前session的名U过滤器?/td>
 voidevict(Object object)
          当前对象实例从session~存中清除?/td>
 voidflush()
          强制提交hQflushQ?tt>Session?/td>
 Objectget(Class clazz, Serializable id)
          Ҏl定标识和实体类q回持久化对象的实例Q如果没有符合条件的持久化对象实例则q回null?/td>
 Objectget(Class clazz, Serializable id, LockMode lockMode)
          Ҏl定标识和实体类q回持久化对象的实例Q如果没有符合条件的持久化对象实例则q回null?/td>
 Objectget(String entityName, Serializable id)
          q回与给定的实体命名和标识匹配的持久化实例,如果没有对应的持久化实例则返回null?/td>
 Objectget(String entityName, Serializable id, LockMode lockMode)
          q回与给定的实体cd标识所匚w的持久化实例Q如果没有对应的持久化实例则q回null?/td>
 CacheModegetCacheMode()
          得到当前的缓存模式?/td>
 LockModegetCurrentLockMode(Object object)
          给定对象当前的锁定U别?/td>
 FiltergetEnabledFilter(String filterName)
          Ҏ名称获取一个当前允许的qo器(filterQ?/td>
 EntityModegetEntityMode()
          获取q个session有效的实体模式?/td>
 StringgetEntityName(Object object)
          q回一个持久化对象的实体名U?/td>
 FlushModegetFlushMode()
          获得当前的刷新提交(flushQ模式?/td>
 SerializablegetIdentifier(Object object)
          获取l定的实体对象实例在Session的缓存中的标识,如果该实例是自由状态(TransientQ的或者与其它Session兌则抛Z个异常?/td>
 QuerygetNamedQuery(String queryName)
          从映文件中Ҏl定的查询的名称字符串获取一?tt>QueryQ查询)实例?/td>
 SessiongetSession(EntityMode entityMode)
          Ҏl定的实体模式(Entity ModeQ开始一个新的有效的Session?/td>
 SessionFactorygetSessionFactory()
          获取创徏q个session?tt>SessionFactory实例?
 SessionStatisticsgetStatistics()
          获取q个session的统计信息?/td>
 TransactiongetTransaction()
          获取与这个session兌?tt>TransactionQ事务)实例?instance associated with this session.
 booleanisConnected()
          查当?tt>Session是否处于q接状态?/td>
 booleanisDirty()
          当前Session是否包含需要与数据库同步的Q数据状态)变化 Q如果我们刷新提交(flushQ这个session是否会有SQL执行Q?/td>
 booleanisOpen()
          查当?tt>Session是否仍然打开?/td>
 Objectload(Class theClass, Serializable id)
          在符合条件的实例存在的情况下Q根据给定的实体cd标识q回持久化状态的实例?/td>
 Objectload(Class theClass, Serializable id, LockMode lockMode)
          在符合条件的实例存在的情况下Q根据给定的实体cR标识及指定的锁定等U返回持久化状态的实例?/td>
 voidload(Object object, Serializable id)
          与l定的标C对应的持久化状态(|复制到给定的自由状态(trasientQ实例上?/td>
 Objectload(String entityName, Serializable id)
          在符合条件的实例存在的情况下Q根据给定的实体cd标识q回持久化状态的实例?/td>
 Objectload(String entityName, Serializable id, LockMode lockMode)
          在符合条件的实例存在的情况下Q根据给定的实体cR标识及指定的锁定等U返回持久化状态的实例?/td>
 voidlock(Object object, LockMode lockMode)
          从给定的对象上获取指定的锁定U别?/td>
 voidlock(String entityName, Object object, LockMode lockMode)
          从给定的对象上获取指定的锁定U别?/td>
 Objectmerge(Object object)
          给定的对象的状态复制到h相同标识的持久化对象上?/td>
 Objectmerge(String entityName, Object object)
          给定的对象的状态复制到h相同标识的持久化对象上?/td>
 voidpersist(Object object)
          一个自q态(transientQ的实例持久化?/td>
 voidpersist(String entityName, Object object)
          一个自q态(transientQ的实例持久化?/td>
 voidreconnect()
          不推荐的?/b> 手工的重新连接只应用于应用程序提供连接的情况Q在q种情况下或许应该?a href="/org/hibernate/Session.html#reconnect(java.sql.Connection)">reconnect(java.sql.Connection)?/i>
 voidreconnect(Connection connection)
          重新q接到给定的JDBCq接?/td>
 voidrefresh(Object object)
          从数据库中重新读取给定实例的状态?/td>
 voidrefresh(Object object, LockMode lockMode)
          Ҏ指定?tt>锁定模式QLockModeQ?/tt>Q从数据库中重新dl定实例的状态?/td>
 voidreplicate(Object object, ReplicationMode replicationMode)
          使用当前的标识值持久化l定的游ȝ态(TransientQ的实体?/td>
 voidreplicate(String entityName, Object object, ReplicationMode replicationMode)
          使用当前的标识值持久化l定的游ȝ态(TransientQ的实体?/td>
 Serializablesave(Object object)
          首先为给定的自由状态(TransientQ的对象Q根据配|)生成一个标识ƈ赋|然后其持久化?/td>
 Serializablesave(String entityName, Object object)
          首先为给定的自由状态(TransientQ的对象Q根据配|)生成一个标识ƈ赋|然后其持久化?/td>
 voidsaveOrUpdate(Object object)
          Ҏl定的实例的标识属性的|注:可以指定unsaved-value。一般默认null。)来决定执?save() ?tt>update()操作?/td>
 voidsaveOrUpdate(String entityName, Object object)
          Ҏl定的实例的标识属性的|注:可以指定unsaved-value。一般默认null。)来决定执?save() ?tt>update()操作?/td>
 voidsetCacheMode(CacheMode cacheMode)
          讄h提交模式?/td>
 voidsetFlushMode(FlushMode flushMode)
          讄h提交模式?/td>
 voidsetReadOnly(Object entity, boolean readOnly)
          一个未l更改的持久化对象设|ؓ只读模式Q或者将一个只d象标Cؓ可以修改的模式?/td>
 voidupdate(Object object)
          Ҏl定的detachedQ游ȝ态)对象实例的标识更新对应的持久化实例?/td>
 voidupdate(String entityName, Object object)
          Ҏl定的detachedQ游ȝ态)对象实例的标识更新对应的持久化实例?/td>
 

from:http://www.aygfsteel.com/iamtin/archive/2006/03/06/33910.html



博客java 2006-04-07 22:04 发表评论
]]>
վ֩ģ壺 | ¤| ͼ| | ɽ| | | | ͩ®| | | ³ɽ| | е| | | ̫ԭ| | | ˮ| | ޽| ϲ| ͨ| ¡| | ݰ| | | ϲ| ׯ| | | | ޻| | ̨| | | | ϲ|