`
liuzhao
  • 浏览: 1418 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate 持久化对象

阅读更多

     Hibernate中通过session提供的不同方法,使Java对象在不同状态间互相转换,Hibernate中定义并支持以下对象状态:瞬时对象、持久对象和脱管对象。

状态图

一、瞬时对象
    一般情况下被Java的new操作符创建的对象,称为瞬时对象。瞬时对象没有和任何数据库
数据关联,如果接下来没有被持久化或者被其他的对象所引用,就会被JVM的GC所销毁。
   只有在调用Hibernate session的持久化方法(save()、saveOrUpdate()等)才能把瞬时
对象转变成持久对象。

 //瞬时对象
Person person = new Person(); 

Session session =sessionFactory.getCurrentSession();
session.setName("liuzhao");
session.save(person);
//持久对象
person.getName();   

session.close();

 

二、持久对象
   持久对象定义为关联到数据库记录的对象实例,同时具有持久化标识,该标识将持久对象

和数据库记录关联。持久对象调用delete()方法就会转换成瞬时状态,调用close()、clear

()等方法将转换成脱管状态。

Session session =sessionFactory.getCurrentSession();
Transaction tx =session.beginTransaction();
//加载持久对象
Person person = session.load(Person.class,new Long(1));
//变成瞬时对象
session.delete(person); 
person.setName("caixj");  
//变成持久对象
session.save(person);
...
tx.commit()
//脱管对象
session.close();

 

三、脱管对象
   脱管对象是持久对象的延续,此时的对象状态已经不被Hibernate Session 说管理,对象属性和数据库记录不再保持同步。
   在脱管状态下,应用程序对脱管对象的引用依然有效,对象可以继续被修改。在正常情况下,不需要我们显示地进行对象转换,因为Hibernate session被关闭的时候,对象就自动变为脱管对象了。如果需要显示地调用的话,可以调用evict()方法,不过该方法主要是用在Hibernate的缓存管理中。

 

  • 大小: 21.8 KB
分享到:
评论

相关推荐

    Hibernate持久化对象的生命周期

    Hibernate的核心概念之一就是持久化对象的生命周期,这涉及到对象在数据库中的状态及其与Session的关系。 首先,我们来看一下Hibernate中持久化对象的三种基本状态: 1. **瞬时对象(Transient Objects)**: - ...

    Hibernate 操纵持久化对象

    **标题:Hibernate 操纵持久化对象** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。本篇将详细讲解如何使用Hibernate来操纵持久化对象,这对于深入理解...

    精通hibernate持久化对象技术.pdf

    ### 精通Hibernate持久化对象技术 #### Hibernate概述 Hibernate是一种开源的对象关系映射(Object Relational Mapping,ORM)框架,它为Java应用程序提供了一种简单、灵活的方式来与数据库进行交互。通过...

    hibernate持久化对象生命周期[参照].pdf

    本文将深入探讨Hibernate中的持久化对象生命周期,包括瞬时对象、持久化对象和游离对象的状态转换及其特性。 1. 瞬时对象(Transient Objects) 瞬时对象是指通过`new`操作符创建但尚未与数据库记录关联的Java对象...

    精通Hibernate:Java对象持久化技术详解

    4. **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但更接近Java的语法,用于检索和操作持久化对象。 5. **第二级缓存**:Hibernate支持查询结果的缓存,可以显著提高系统性能,特别是对于...

    Hibernate操作持久化对象

    Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...

    精通Hibernate:Java对象持久化详解.zip

    《精通Hibernate:Java对象持久化详解》是一本深入解析Hibernate技术的专著,它主要针对Java开发者,旨在帮助他们理解和掌握Java对象持久化的精髓。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了...

    深入学习Hibernate持久化对象的三个状态

    在理解Hibernate持久化对象的三个状态之前,首先要明白Hibernate是一个对象关系映射(ORM)框架,它将数据库操作转化为对Java对象的操作。这三个状态决定了对象与数据库之间的一致性及生命周期,分别是: 1. **瞬时...

    精通Hibernate:Java对象持久化技术详解.pdf

    《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...

    hibernate持久化技术详解.孙卫琴.代码2

    **hibernate持久化技术详解** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的强大工具。通过Hibernate,开发者可以将数据库操作转化为对Java对象的操作,大大降低了...

    精通Hibernate:Java持久化对象技术详解[第二版]

    《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...

    精通Hibernate:java对象持久化技术

    【精通Hibernate:Java对象持久化技术】主要涵盖了Java应用程序的分层体系结构、软件模型以及对象持久化的概念,特别是如何使用Hibernate这一ORM框架进行持久化操作。以下是详细的知识点解析: 1. **应用程序分层...

    Hibernate数据持久化技术

    在JDO中,首先需要编写POJO,然后通过一个名为Enhancer的工具在编译后阶段对POJO的字节码进行增强,生成对应的持久化对象。这意味着JDO的转换过程发生在编译期间,而Hibernate的转换是在运行时。 Hibernate的优点...

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

    精通 Hibernate:Java 对象持久化技术详解 第2版 学习Hibernate必备得一本书

    精通 Hibernate_Java 对象持久化技术详解(第2版).pdf

    精通 Hibernate_Java 对象持久化技术详解(第2版).pdf

    Java 精通Hibernate对象持久化技术权威指南

    《Java精通Hibernate对象持久化技术权威指南》是一本深度探讨Java开发中如何高效地使用Hibernate进行对象持久化的专业书籍。本书旨在帮助Java开发者熟练掌握Hibernate框架,实现数据库操作的简化和自动化,提升软件...

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

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

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

    一共有三个分卷。全部下载才能解压。 这本书不错,值得一看。

    Hibernate 数据持久化

    总结来说,Hibernate的数据持久化机制是通过ORM技术将Java对象与数据库表进行绑定,使得开发者可以通过简单的对象操作实现对数据库的复杂操作。理解并熟练运用Hibernate,不仅可以提高开发效率,还能使应用程序更加...

Global site tag (gtag.js) - Google Analytics