`
抛出异常的爱
  • 浏览: 620595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

session的基本操作(hibernate)

阅读更多
近日重读Hibernate文档,整理一下思路,发现几个方法没有用过,顺便和大家讨论下 。
session的基本操作有:
persist():
这个操作我以前从没见过,更没有用过,好像是跟save差不多吧?Doc文件上说当级联风格为persist时,这个操作会级联操作关联的对象。这个方法的语义是JSR-220定义的。但具体的与Save的区别却不是很清楚,有知道的不吝赐教,呵呵
save():
这个大家都很熟悉了,首先会赋予一个标志符,然后持久化给定的对象。但是如果使用assigned 标志符产生方法,则会使用当前的标志符值。如果级联风格为save-update,则会持久化相应的关联对象
merge()
拷贝当前的对象的状态到相同标志符的持久化对象的状态。如果当前关联的session中没有持久化对象,Hibernate会加载该对象,并返回这个持久化对象。如果给定的对象没有保存,则Hibernate保存该副本,返回这个新持久化的对象,但给定的对象并没有和session关联。如果指定级联风格为merge,则会级联关联对象。该方法的语义是JSR-200定义的。
saveOrUpdate()
这个也用的很多吧,保存或更新给定对象,取决于给定对象的持久化状态。默认情况下是保存,在指定标志符元素属性为unsaved-value时则会调整。如果级联风格为"save-update",则会级联相关联的对象

delete(),
不说了。

lock(),
用的不多呵呵,但不知大家用过多少。用于对指定对象设置参数中给定的锁。如果锁为LockMode.READ,可以用来执行版本检查;如果锁为LockMode.UPGRADE则用来执行悲观锁。如果指定为LockMode.NONE,则仅仅时持久化一个未持久化的对象。如果级联风格为lock,会级联相关联的对象。
refresh(),
用的不是很多。 从当前数据库中重新读取给定对象的状态。这在执行跨越多个业务任务的长时间session中优势不显著,在少数特定环境下还是有用的,例如:
插入或更新后数据库触发器更改了对象的状态。
当前session中执行完原生SQL后(如批量更新)。
插入Blob或Clob对象后
evict(),
用过几次,但不是很多。从session的缓存中去除当前实例。执行后对象的改变将不再和数据库保持同步。。当指定级联风格为'evict’时,会级联操作关联对象。我用的时候主要是用于批量操作的时候,清空缓存,防止内存紧张。
Persist the state of the given detached instance, reusing the current identifier value. This operation cascades to associated instances if the association is mapped with cascade="replicate"
replicate()
重用当前的标志符,持久化当前已经脱离session的对象的状态。具体的操作和要看参数ReplicationMode。如果是ReplicationMode.EXCEPTION,则在复制时如果有重复的行数据,则抛出异常。ReplicationMode.IGNORE则忽略异常。ReplicationMode.OVERWRITE则会覆盖掉已有行数据。ReplicationMode.LATEST_VERSION则是在有重复时使用最新的版本进行控制。
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    Hibernate+中文文档

    3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法...

    Hibernate学习笔记

    007 Hibernate 基本映射标签和属性介绍 008 多对一 关联映射 009 一对一 主键关联映射_单向 010 一对一 主键关联映射_双向 011 一对一 唯一外键关联映射_单向 012 一对一 唯一外键关联映射_双向 013 session_flush ...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    HibernateAPI中文版.chm

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    hibernate 教程

    操作持久化数据(Manipulating Persistent Data) 9.1. 创建一个持久化对象 9.2. 装载对象 9.3. Querying 9.3.1. 标量查询(Scalar query) 9.3.2. 查询接口(Query interface) 9.3.3. 可滚动迭代...

    Hibernate中文详细学习文档

    3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法...

    hibernate-prj2

    1、进一步掌握 Hibernate 应用的开发方法,理解 Hibernate 配置文件中主要元素 的作用,会开发持久化类,并进行... 3、理解 Hibernate 基本 API 中 Session 的主要作用,掌握利用 Session 进行数据 库操作的基本步骤。

    Hibernate实战(第2版 中文高清版)

     11.1 传播Hibernate Session   11.1.1 Session传播的用例   11.1.2 通过线程局部传播   11.1.3 利用JTA传播   11.1.4 利用EJB传播   11.2 利用Hibernate的对话   11.2.1 提供对话保证   11.2.2 利用...

    Hibernate 中文 html 帮助文档

    3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor)...

    hibernate 体系结构与配置 参考文档(html)

    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.3. 第...

    最全Hibernate 参考文档

    5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围的标识符 5.4. 其他元数据(Metadata) 5.4.1. 使用 XDoclet 标记 5.4.2. 使用 JDK 5.0 的注解(Annotation) 6. 集合类(Collections)映射 6.1. 持久化集合类...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate教程

    6.2.2. 基本值类型 6.2.3. 自定义值类型 6.3. SQL中引号包围的标识符 6.4. 其他元数据(Metadata) 6.4.1. 使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    hibernate

    操作持久化数据(Manipulating Persistent Data) 9.1. 创建一个持久化对象 9.2. 装载对象 9.3. Querying 9.3.1. 标量查询(Scalar query) 9.3.2. 查询接口(Query interface) 9.3.3. 可滚动迭代...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

Global site tag (gtag.js) - Google Analytics