Hibernate的透明持久化用起来非常舒服,有时甚至忘记了数据库的存在。我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体对象的生命周期也有很多概念不清,分不清transient、persistent、detached的区别,只是知道PO、VO这样的通俗叫法。其实这些概念都很简单,Hibernate的javadoc写的都很清楚,只需看看就能明白。所以我花了些时间将Hibernate 3.1.2中session的javadoc部分翻译了一下,旨在让那些因为Hibernate的“透明”而忘记了它基本概念的人们停下来再看看这些概念
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(游离状态)对象实例的标识更新对应的持久化实例。 |
相关推荐
Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作...对于初学者来说,阅读Hibernate的javadoc是非常有益的,可以避免因概念模糊而引发的错误。
`hibernate javadoc 4.2.1`是Hibernate 4.2.1版本的API文档,提供了详细的英文说明,帮助开发者理解和使用该版本的Hibernate框架。 在Hibernate 4.2.1中,主要包含以下几个核心知识点: 1. **实体管理**:...
《Hibernate API 3.6.0 Javadoc:深入理解与应用》 Hibernate,作为一个流行的Java对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它的3.6.0版本是一个重要的里程碑,引入了许多改进和增强...
通过阅读"Hibernate4.0.1_javadoc"中的英文API文档,开发者可以详细了解每个类、接口和方法的用途及用法,从而更好地理解和利用Hibernate的功能。这些文档是开发过程中不可或缺的参考资料,能够帮助开发者避免常见...
2. **API文档**:包含了Hibernate的Javadoc,这是开发者查阅API接口、方法和类的重要参考资料,有助于理解和使用各种API。 3. **示例项目**:可能包含了一些演示如何使用Hibernate的项目,这些项目通常包含配置文件...
2. **Session API**: Hibernate的Session接口是与数据库进行交互的主要接口,它提供了增删改查(CRUD)操作,并负责事务管理和缓存管理。 3. **Criteria 查询**: 除了传统的HQL(Hibernate Query Language)查询,...
例如,你可以看到Hibernate如何通过Session接口处理数据库交互,怎样使用Criteria API或HQL(Hibernate Query Language)进行查询,以及实体类如何被映射到数据库表等。 `build.bat`和`build.sh`是构建脚本,通常...
7. **强大的API**:包括Session、SessionFactory等接口,为开发者提供了全面的数据库操作工具。 ### lib 文件夹 在`lib`文件夹中,包含了一系列Hibernate所需的库文件,可能包括以下组件: 1. **hibernate-core.jar...
这个压缩包中不仅有运行时所需的jar文件,还包含了详细的API文档——javadoc,这对于开发者理解和使用Hibernate提供了极大的便利。 Hibernate的核心功能在于对象关系映射,它允许开发者以面向对象的方式来处理...
在JDK5.0之前,xdoclet是处理Hibernate映射文件(hbm.xml)的主要工具,因为它可以直接从Javadoc注释中生成这些文件,大大简化了开发过程。 ##### 2.2 xdoclet与Hibernate映射 - **Hibernate Template**: Eclipse...
这部分主要包括了Hibernate的实体管理和事务处理功能,如Session接口、Transaction接口等,用于处理数据库的CRUD(创建、读取、更新、删除)操作。此外,它还支持对象的状态管理,包括瞬时状态、持久化状态、托管...
- **XDoclet**:这是一种工具,可以用来基于Java代码中的Javadoc注释自动生成Hibernate映射文件。这有助于减少手动编写XML的工作量。 #### 四、HQL查询语言 - HQL(Hibernate Query Language)子句本身大小写无关...
**标题解析:**"hibernate-core-4.3.5.Final-javadocs-chm" 是 Hibernate 框架核心模块的 4.3.5 最终版本的 Java 文档(Javadoc)的 CHM(Compiled HTML Help)格式文件。这个标题表明我们关注的是 Hibernate 的核心...
- 创建DAO类,用来封装对数据库的CRUD操作,使用Hibernate的`SessionFactory`和`Session`接口进行数据库交互。 - 理解并正确处理事务管理,例如使用`Transaction`对象进行事务控制。 6. **测试与运行** - 编写...
- 提供了对Hibernate Template的支持,简化了Hibernate Session的操作。 - 实现了Hibernate Template和SessionFactory的关联。 - **Spring配置**: - 在Spring配置文件中可以移植整个`hibernate.cfg.xml`的内容,...
它提供了Session接口,是与数据库交互的主要入口,支持对象的持久化、查询和事务管理。 2. **Lucene** - `lucene-core-6.3.0.jar` 和 `lucene-analyzers-common-6.3.0.jar` Lucene是Apache的一个全文检索库,可...
- **XDoclet与Hibernate映射**:XDoclet是一个源码注释处理器,它可以生成各种类型的文档或源代码,如Javadoc、XML文件等。在Hibernate中,它常用来生成映射文件。 - **数据检索**:包括使用`CriteriaQuery`和`...
描述中提到的“Transient 对象”是指在Java程序中创建的新实例,比如`User user = new User()`,这个user对象还未与Hibernate的Session建立关联,因此它的状态是Transient。在Hibernate中,对Transient对象进行的...
Hibernate的核心接口包括Configuration、SessionFactory、Session、Transaction、Query和Criteria等。 - **Configuration**:用于加载Hibernate的配置信息,包括数据库连接参数、映射文件路径等。 - **...
8. **ActionContext**: 保存了请求上下文中的所有信息,如Action上下文、session、request和response对象,以及OGNL表达式解析时需要的上下文变量。 9. ** strut2-core 包**: 这个核心包包含了Struts 2框架的主要类...