`
SIHAIloveYAN
  • 浏览: 119944 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

hibernate教程--持久化类状态

 
阅读更多

一、 Hibernate的持久化类状态:

1.1Hibernate的持久化类状态

持久化类:就是一个实体类 与 数据库表建立了映射.

Hibernate为了方便管理持久化类,将持久化类分成了三种状态.

瞬时态 transient:(临时态)

持久态 persistent:

脱管态 detached:(离线态)

1.2三种持久化对象的状态:

Transient瞬时态:

特点:持久化对象没有唯一标识OID.没有纳入Session的管理.

Persistent持久态:

特点:持久化对象有唯一标识OID.已经纳入到Session的管理.

结论:持久化持久态对象有自动更新数据库的能力.

Detached脱管态:

特点:持久化对象有唯一标识OID,没有纳入到Session管理.

1.3区分三种持久化对象的状态:

@Test

// 区分持久化对象的三种状态:

public void demo1(){

// 1.创建Session

Session session = HibernateUtils.openSession();

// 2.开启事务

Transaction tx = session.beginTransaction();

// 向数据库中保存一本图书:

Book book = new Book();// 瞬时态:没有唯一标识OID,没有与session关联.

book.setName("Hiernate开发");

book.setAuthor("XX");

book.setPrice(65d);

session.save(book); // 持久态:有唯一标识OID,与session关联.

// 3.事务提交

tx.commit();

// 4.释放资源

session.close();

book.setName("Struts2开发"); // 脱管态:有唯一的标识,没有与session关联.

}

 


1.4三种状态对象转换:

1.4.1、瞬时态:

获得:

Book book = new Book();

瞬时--->持久

* save(book);

* save()/saveOrUpdate();

瞬时--->脱管

* book.setId(1);

1.4.2、持久态:

获得:

Book book = (Book)session.get(Book.class,1);

* get()/load()/find()/iterate();

持久--->瞬时:

* delete(book);

* 特殊状态:删除态.(被删除的对象,不建议去使用.)

持久--->脱管:

* session.close();

* close()/clear()/evict();


1.4.3、脱管态:

获得:

Book book = new Book();

book.setId(1);

脱管--->持久:

* session.update();

* update()/saveOrUpdate()/lock()

脱管--->瞬时:

* book.setId(null);

1.5持久态对象有自动更新数据库的能力;

@Test

// 测试持久态的对象自动更新数据库

public void demo2(){

// 1.创建Session

Session session = HibernateUtils.openSession();

// 2.开启事务

Transaction tx = session.beginTransaction();

// 获得一个持久态的对象.

Book book = (Book) session.get(Book.class, 1);

book.setName("Struts2开发");

// session.update(book);

// 3.提交事务

tx.commit();

// 4.关闭资源

session.close();

}


分享到:
评论

相关推荐

    Hibernate教程-最全-最好_204页

    《Hibernate教程-最全-最好_204页》是一个深度涵盖Hibernate框架的全面教程,旨在帮助初学者和进阶者深入理解并掌握这一强大的Java持久化技术。在这个204页的教程中,读者将了解到如何利用Hibernate来简化数据库操作...

    HIBERNATE - 符合Java习惯的关系数据库持久化.docx

    《Hibernate - 符合Java习惯的关系数据库持久化》是一份关于Hibernate框架的详细教程,旨在帮助Java开发者理解和应用Hibernate进行数据库操作。Hibernate是Java领域中的一款流行的对象关系映射(ORM)工具,它允许...

    hibernate-release-5.4.21.Final.zip

    4. **持久化模型**:在Hibernate中,通过定义实体类(Entity)来代表数据库中的表,使用注解或XML配置文件来描述对象与表之间的映射关系。例如,@Entity、@Table、@Id等注解用于声明实体和主键。 5. **会话和事务**...

    hibernate:java持久化对象详解01

    本教程“hibernate:java持久化对象详解01”聚焦于理解Hibernate如何将Java对象持久化到数据库中。 首先,让我们了解一下什么是持久化对象。在Java中,持久化对象是指那些状态可以被保存到持久存储介质(如数据库)...

    hibernate-tutorials_java_hibernate_Eclipse_fallenweg_

    Hibernate的核心概念包括实体(Entity)、持久化类(Persistent Class)、对象状态(Object State)、会话(Session)和事务(Transaction)。这些概念是理解Hibernate工作原理的基础,本教程将逐一解析。 5. **...

    精通Hibernate:Java對象持久化技術詳解

    《精通Hibernate:Java對象持久化技術詳解》是一本深度解析Hibernate的教程,它旨在帮助Java开发者深入了解和掌握对象关系映射(ORM)技术,特别是通过Hibernate框架实现的持久化机制。Hibernate作为Java领域中广泛...

    hibernate-distribution-3.3.2.GA

    此外,它还支持对象的状态管理,包括瞬时状态、持久化状态、托管状态和脱管状态。 3. Hibernate查询语言(Hibernate Query Language, HQL) HQL是Hibernate提供的一种面向对象的查询语言,类似于SQL,但更加面向...

    hibernate教程hibernate教程

    总的来说,Hibernate教程旨在帮助开发者理解和掌握如何利用Hibernate高效地管理和操作数据库,包括优化查询性能、处理对象状态、实现数据同步和自定义扩展。通过深入学习这些知识点,开发者能够更好地适应现代企业级...

    hibernate-distribution-3.3.0.CR1-dist.zip_hibernate jar包_hiber

    《深入理解Hibernate:开源持久化框架的探索与实践》 Hibernate是一个开源的Java语言下的对象关系映射(ORM)框架,它为开发者提供了一种在Java应用中管理和操作数据库的强大工具。标题中的“hibernate-...

    精通hibernate3.0(第三版).rar

    1. Hibernate基本概念:介绍Hibernate的核心思想,如实体、持久化类、对象状态管理、事务处理等,帮助初学者建立对ORM框架的基本认识。 2. Hibernate配置:讲解如何配置Hibernate的XML文件,包括hibernate.cfg.xml...

    韩顺平hibernate3.3视频教程源码4-5day

    最后,通过源码分析,我们可以了解到Hibernate的工作原理,包括对象状态管理、持久化过程以及查询执行机制。这有助于开发者在实际项目中更好地优化代码,提高性能。 总之,《韩顺平Hibernate3.3视频教程源码4-5day...

    hibernate入门教程

    在Hibernate中,每个持久化类都应至少有一个标识属性,Hibernate通过这个属性来追踪对象的状态,并实现对象的持久化。 在上面提供的内容中,我们看到一个名为Event的JavaBean类,它代表了一个简单的事件对象。该类...

    hibernate-jpa学习

    通过阅读源码,我们可以学习到如何处理持久化过程中的各种细节,如对象的状态管理、查询解析和执行、事务控制等。例如,`EntityManager`如何创建和管理`EntityStateful`,以及`SessionFactory`如何初始化和配置缓存...

    Hibernate基础教程

    - `merge()`:将临时对象的状态合并到持久化对象上,即使原对象是非持久化的。 - `delete()`:从数据库中删除对象。 六、查询语言 - HQL(Hibernate Query Language):类似于SQL的面向对象查询语言,支持类、属性...

    培训教程-hibernate ppt doc

    目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳实践

Global site tag (gtag.js) - Google Analytics