- 浏览: 384161 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
h416373073:
重新加深印象了 谢谢博主
JAVA虚拟机参数说明 -
linsongze2012:
Spring JDBC注解 -
XiaoXiaoYang37790315:
大神,能详细描述一下么?谢了。。。找一天了
HSQLDB 带Connection的Stored Procedure -
liuxiang00435057:
看不明白说什么,现在正在做这个
HSQLDB 带Connection的Stored Procedure -
yqsshr:
不错 谢谢博主 知道xms xmx及permsize和ma ...
JAVA虚拟机参数说明
由于数据是有可能恢复到非空数据库,导入的逻辑还比较复杂,需要处理主键冲突问题,以及其它业务逻辑。
下面找到的一篇关于hibernate session的中文翻译对我来讲,用处很大,正好留做参考。th3x:)
org.hibernate
Interface Session
Java应用程序与Hibernate之间的主要运行时接口。它是抽象了持久化服务概念的核心抽象API类。
Session的生命周期绑定在一个物理的事务(tansaction)上面。(长的事务可能跨越多个数据库事物。)
Session的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:
自由状态(transient): 不曾进行持久化,未与任何Session相关联
持久化状态(persistent): 仅与一个Session相关联
游离状态(detached): 已经进行过持久化,但当前未与任何Session相关联
游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。持久化实例可以通过调用 delete()变成游离状态。通过get()或load()方法得到的实例都是持久化状态的。游离状态的实例可以通过调用 update()、0saveOrUpdate()、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的内部状态可能会与数据库失去同步。
SessionFactory
<!-- ======== NESTED CLASS SUMMARY ======== --><!-- =========== FIELD SUMMARY =========== --><!-- ======== CONSTRUCTOR SUMMARY ======== --><!-- ========== METHOD SUMMARY =========== --><!-- -->
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(游离状态)对象实例的标识更新对应的持久化实例。 |
发表评论
-
mysql开发工具套件
2008-05-21 00:35 2309mysql4.0不支持嵌套查询,需要转换到mysql5 ... -
数据基线改版
2008-03-19 22:04 1014由于底层实体工具改动,数据基线生成程序不得不重新改写。以 ... -
.NET SQLITE编程
2007-07-18 22:46 1866OK,今天终于完成了第一部分。 ... -
批处理概念误解
2007-07-05 16:51 1332今天被同事指出了程序中的一个性能问题,主要是关于 ... -
BUG Tracing
2007-05-31 22:09 1940今晚老大让我帮他解决一个BUG,该BUG出来得 ... -
批量删除
2007-05-31 10:55 1293java 代码 public void del ... -
事务是在DAO还是在Service
2007-05-29 16:40 1690今天下午和新来的同事聊起技术研究来了,大家都有一 ... -
Hibernate Sync DAO封装小结
2007-05-24 21:05 5260转一篇我在项目BLOG上写的文章。搞Hibernate Syn ... -
DBUnit实践
2007-05-21 23:12 3981经过下午和晚上的摸索,基本上已经搞定了DBUni ... -
preparedStatment与Statement的区别
2007-04-25 22:00 2756如果一个sql语句很复杂,包含多条SQL语句的话 ... -
hsqldb Cached Table转变
2007-04-21 15:00 2919之前,使用HSQLDB的时候没有考虑客户端内存的 ... -
SQL变化到极致
2007-04-18 23:04 1295sql 代码 select ... -
hsql script文件加密
2007-04-14 19:28 2154现在的应用中并没有对hsqldb的script ... -
SPA数据管理工具的设计
2007-04-18 16:05 1431事先声明,这篇设计也是因为编辑时间较长,被JAV ... -
磁盘I/O也能够让程序不正确
2007-04-13 19:29 2699HSQLDB数据库执行SHUTDOWN命令,如果 ... -
HSQLDB Create View
2007-04-05 09:52 1741HSQLDB Create VIEW是创 ... -
hql in depth
2007-04-04 15:43 3470这个问题其实相当简单,但是,我在之前开发当中就 ... -
HSQLDB 带Connection的Stored Procedure
2007-04-02 14:03 2844先抱怨几句: javaeye出问题了,我写了一篇文章,点击提 ... -
数据库单元测试
2007-03-30 19:00 2298Agile在国内已经流行了很长一段时间了,有各个方面的 ...
相关推荐
"Hibernate 3.5.2 中文API" 是针对该版本的Hibernate提供的官方API文档的中文翻译版,对于初学者和进阶者来说都是不可或缺的学习资源。 1. **对象关系映射(ORM)基础**:ORM的核心思想是将数据库中的表格映射为...
这个中文版的翻译工作为国内开发者提供了方便,使他们能更直观地理解和掌握Hibernate的核心概念与使用技巧。 Hibernate的主要功能在于将Java对象与数据库表进行映射,通过对象化的操作方式管理数据库,降低了数据层...
1. Hibernate v3翻译团队 3.1. Hibernate JDBC属性 3.2. Hibernate数据源属性 3.3. Hibernate配置属性 3.4. Hibernate JDBC和连接(connection)属性 3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他...
1. Hibernate v3翻译团队 3.1. Hibernate JDBC属性 3.2. Hibernate数据源属性 3.3. Hibernate配置属性 3.4. Hibernate JDBC和连接(connection)属性 3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他...
此文档是Hibernate 3.6版本的官方中文翻译,为开发者提供了详尽的指南,帮助理解并使用Hibernate进行开发。 在开始之前,你需要了解一些基本概念: 1. **对象关系映射(ORM)**: ORM是将关系数据库的数据模型映射...
本教程基于Hibernate4,是IT技术人员精心翻译的中文帮助文档,旨在为学习Hibernate的中文用户提供详尽的指导。 一、Hibernate 概述 Hibernate 提供了一种在Java应用程序中持久化对象的方式,它通过映射Java类到...
1. Hibernate v3翻译团队 3.1. Hibernate JDBC属性 3.2. Hibernate数据源属性 3.3. Hibernate配置属性 3.4. Hibernate JDBC和连接(connection)属性 3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他...
这份“Hibernate3.2官方中文参考手册.pdf”和“Hibernate3.1_DOC_CN.chm中文版”是Hibernate官方文档的中文翻译版本,对于学习和理解Hibernate框架具有极高的价值。 首先,我们来看`Hibernate3.2官方中文参考手册....
1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6...
1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. ...
它通常会提供最准确和最新的技术信息,包括任何可能在中文版中没有提及或翻译不准确的部分。 3. **两个chm格式的Hibernate3.2 API文档**: CHM(Compiled HTML Help)文件是一种常见的Windows帮助文档格式,它包含...
这个中文文档是Hibernate 3.2英文版的翻译,旨在帮助中国开发者更好地理解和运用Hibernate框架。 首先,我们需要了解Hibernate的核心概念。ORM是一种技术,它允许我们在面向对象的编程环境中操作数据库,而无需直接...
1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6...
《Hibernate3.2官方中文参考手册》是针对Hibernate框架的权威指南,由满江红团队翻译,为中文用户提供了详尽的使用说明和技术解析。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java应用中...
在描述中提到的“配合Hibernate 3中文参考使用”,意味着此手册可能包含有中文翻译或注释,这对于中文使用者来说是极大的便利,能够帮助他们更好地理解和应用Hibernate 3的API。 关于Hibernate 3 API,它是...
对于中文开发者来说,中文版的参考手册降低了学习Hibernate的门槛,避免了翻译过程中的信息损失,更便于理解和应用。手册详细阐述了Hibernate的配置、实体映射、事务管理、查询机制等内容,适合初学者和有经验的...
这两个文件分别是“Hibernate_3.2.0 API中文.chm”和“hibernate3.2中文.chm”,前者是Hibernate 3.2的中文API文档,后者可能是更全面的教程或指南,同样提供了中文翻译,对于中文用户来说非常友好,能有效降低学习...
3. 更深入的学习:要深入了解Hibernate Annotation,可以参考官方文档`hibernate_annotations_3.2.1.pdf`(英文原稿)和中文翻译版`hibernate_annotations_zh.pdf`(满江红翻译)。这些文档详细介绍了各种注解的用法...
1. 翻译说明 2. 版权声明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 2.1. 前言 2.2. 第一部分 - 第一个Hibernate...