`
gaojingsong
  • 浏览: 1211551 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【JAVA之hibernate对象三态及包结构】

阅读更多

1、Hibernate对象三态

在Hibernate中,对象有三种状态:临 时状态(Transient)、持久状态(Persistent)和游离状态(Detached)。

处于持久态的对象也称为 PO(PersistenceObject),临时对象和游离对象也称为VO(ValueObject). 

1)临时状态 

由 new命令开辟内存空间的java对象,例如:

User user=new User();

临 时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系.

(a) 如 果没有变量对该对象进行引用,它将被gc回收;

(b) 在Hibernate中,可通过 session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该临时对象转变成持久化对 象.



 

2.)持久状态 

处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识.通过session的get()、load() 等方法获得的对象都是持久对象。

持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化 对象是脏的(Dirty)。

(a) 如果是用hibernate的delete()方法,对应的持久对象就变成临时对象,因数据库中 的对应数据已被删除,该对象不再与数据库的记录关联.

(b) 当一个session执行close()或 clear()、evict()之后,持久对象变成游离对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下.

持久对象具有如下特点:

(1)和session实例关联;

(2)在数据库中有与之关联的记录,并 拥有持久化标识.

 

3.)游离状态

当与某持久对象关联的session被关闭后,该持久对象转变为游离对象.当游离对象被重新关联到session上 时,又再次转变成持久对象(在Detached其间的改动将被持久化到数据库中)。 游离对象拥有数据库的识别值,但已不在持久化管理范围之内。

(a) 通 过update()、saveOrUpdate()等方法,游离对象可转变成持久对象.

(b) 如果是用hibernate的delete()方法,对应的游离对象就变成临时对象,因数据库中的 对应数据已被删除,该对象不再与数据库的记录关联.

(c) 在没有任何变量引用它时,它将被gc在适当的 时候回收;

游离对象具有如下特点:

(1)本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;

(2)比瞬时对象多了一个数据库记录标识值.

 

2、Hibernate源码包结构

(弄清楚包结构,有助于源码阅读)

net.sf.hibernate.* 

该包的类基本上都是接口类和异常类

net.sf.hibernate.cache.*

JCS的实现类

net.sf.hibernate.cfg.*

配置文件读取类

net.sf.hibernate.collection.*

Hibernate集合接口实现类,例如List,Set,Bag等等,Hibernate之所以要自行编写集合接口实现类是为了支持lazy loading

net.sf.hibernate.connection.*

几个数据库连接池的Provider

net.sf.hibernate.dialect.*

支持多种数据库特性,每个Dialect实现类代表一种数据库,描述了该数据库支持的数据类型和其它特点,例如是否有AutoIncrement,是否有Sequence,是否有分页sql等等

net.sf.hibernate. eg.*

Hibernate文档中用到的例子

net.sf.hibernate.engine.*

这个包的类作用比较散

net.sf.hibernate.expression.*

HQL支持的表达式

net.sf.hibernate.hq.*

HQL实现

net.sf.hibernate. id.*

ID生成器

net.sf.hibernate.impl.*

最核心的包,一些重要接口的实现类,如Session,SessionFactory,Query等

net.sf.hibernate.jca.*

JCA支持,把Session包装为支持JCA的接口实现类

net.sf.hibernate.jmx.*

JMX是用来编写App Server的管理程序的,大概是JMX部分接口的实现,使得App Server可以通过JMX接口管理Hibernate

net.sf.hibernate.loader.*

也是很核心的包,主要是生成sql语句的

net.sf.hibernate.lob.*

Blob和Clob支持

net.sf.hibernate.mapping.*

hbm文件的属性实现

net.sf.hibernate.metadata.*

PO的Meta实现

net.sf.hibernate.odmg.*

ODMG是一个ORM标准,这个包是ODMG标准的实现类

net.sf.hibernate.persister.*

核心包,实现持久对象和表之间的映射

net.sf.hibernate.proxy.*

Proxy和Lazy Loading支持

net.sf.hibernate. ps.*

该包是PreparedStatment Cache

net.sf.hibernate.sql.*

生成JDBC sql语句的包

net.sf.hibernate.test.*

测试类,你可以用junit来测试Hibernate

net.sf.hibernate.tool.hbm2ddl.*

用hbm配置文件生成DDL

net.sf.hibernate.transaction.*

Hibernate Transaction实现类

net.sf.hibernate.type.*

Hibernate中定义的持久对象的属性的数据类型

net.sf.hibernate.util.*

一些工具类,作用比较散

net.sf.hibernate.xml.*

XML数据绑定

  • 大小: 306.4 KB
0
1
分享到:
评论

相关推荐

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

     11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 ...

    java+hibernate+spring

    Java、Hibernate 和 Spring 是三个在IT行业中至关重要的技术,它们共同构建了企业级应用开发的强大框架。这个压缩包文件可能包含了一个使用这些技术的示例项目,帮助学习者理解它们如何协同工作。 Java 是一种多...

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

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

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

    《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...

    java模拟hibernate实现

    在Java编程领域,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本项目通过Java的反射和注解技术,试图模拟Hibernate的部分功能,以便更好...

    hibernate-最少依赖jar包

    【标题】"Hibernate是最小依赖jar包"指出的是在使用Hibernate框架时,为了实现其基本功能,所需的最小Java归档(JAR)文件集合。Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者使用Java对象来操作...

    java之hibernate视频.rar

    《Java之Hibernate视频教程》是一份详尽的教育资源,旨在帮助学习者深入理解并掌握Java中的持久化框架——Hibernate。Hibernate作为一个开源的对象关系映射(ORM)工具,它极大地简化了Java应用程序对数据库的操作,...

    HibernateDao.java

    `HibernateDao.java`是Hibernate框架中一个常见的数据访问对象(DAO,Data Access Object)类,它的主要职责是封装对数据库的操作,提供一套面向对象的接口,使得业务逻辑层可以无需关心底层SQL语句,直接通过对象...

    Java struts hibernate 购物网站

    Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。在购物网站项目中,Hibernate负责管理数据库操作,如商品的添加、删除、更新和查询。通过Hibernate,开发者可以使用面向对象的方式...

    来自Java Persistence With Hibernate的示例

    在Java开发领域,持久化是不可或缺的一部分,而Hibernate作为Java中最流行的ORM(对象关系映射)框架之一,它极大地简化了数据库操作。本篇将深入探讨“Java Persistence with Hibernate”的核心概念,并通过具体的...

    Hibernate驱动包

    Hibernate是一款开源的对象关系映射(ORM)框架,它允许Java开发者在处理数据库时使用面向对象的方式,极大地简化了数据操作。这款最新的Hibernate驱动包包含了所有必要的组件,使得开发者能够更高效、更便捷地与...

    hibernate中的对象关系模型

    在Java持久化框架Hibernate中,对象关系模型(Object-Relational Mapping,ORM)是将数据库中的数据映射到Java对象的技术。它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对...

    hibernate的相关jar包

    在Java开发中,Hibernate简化了数据库操作,通过将Java类与数据库表进行映射,使得开发者无需直接编写SQL语句,而是通过对象模型进行数据操作。 **Hibernate的核心jar包** Hibernate的核心jar包主要包括以下组件: ...

    hibernate5所需jar包

    标题"hibernate5所需jar包"指的是在进行Hibernate 5开发时所需的Java档案(JAR)文件集合。这些JAR文件是Hibernate框架的组成部分,它们包含了运行和使用Hibernate来实现对象关系映射(ORM)功能所必需的类库和资源...

    java私塾独家首发最新Hibernate4教程

    - **Hibernate对象状态**:包括瞬态(Transient)、持久(Persistent)、游离(Detached)三种状态。 - **增删改查操作**:通过Session提供的API进行CRUD操作。 - **HQL语句**:一种面向对象的查询语言,用于查询和...

    hibernate的所有必备jar包

    1. Hibernate:Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发人员使用面向对象的方式来操作数据库,而无需直接编写SQL语句。通过Hibernate,Java对象可以被透明地保存、更新、查询和删除,简化了...

    hibernate使用的jar包

    Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在3.3.2版本中,Hibernate提供了一系列的jar包,这些jar包包含了实现ORM功能所需的类库...

    企业人事管理系统Java Swing+Hibernate+Oracal

    《企业人事管理系统Java Swing+Hibernate+Oracle》是一个基于Java编程语言、Swing图形用户界面库、Hibernate持久化框架以及Oracle数据库的企业级应用。这个系统旨在为企事业单位提供高效、便捷的人事信息管理解决...

Global site tag (gtag.js) - Google Analytics