Hibernate的持久化

计应134  徐雪双

1.持久化类

持久化类是指被需要被Hibernate持久化类到数据库中的实例所对应的类。Hibernate中操作的持久化类对象都是普通的Java类对象,与普通的JavaBean没什么区别,但是需注意:

(1)持久化类必须有一个无参的构造方法:Hibernate要求持久化类必须提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用反射机制调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。

(2)持久化类必须有一个唯一标识属性:在面向对象术语中,这个唯一标识属性被称为对象标识符(Object Identifier,OID),这个属性通常映射为数据库的主键,一般都是用整数表示,也可用其他类型。

(3)持久化类的每个属性必须提供set()和get()方法:get()和set()方法必须符合特定的命名规则,即“get”和“set”后紧跟属性的名字,且属性名的首字母需要大写。如:

name属性的set方法为setName(),get方法为getName()。

(4)若持久化的属性为boolean类型,其get方法名可用get为前缀,也可用is为前缀。

(5)持久化类何时需要实现java.io.Serializable接口取决于应用。

2.持久化对象的3种状态:

(1)瞬态:对象由new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识。若程序中失去了瞬态对象的引用,瞬态对象将被自动回收。使用Hibernate Session可使其变为持久化状态。

(2)持久化:持久化实例在数据库中有相应的记录,拥有一个持久化标识。持久化对象必须与指定的Hibernate Session关联。若持久化对象改变,在对象操作完成时Hibernate会将对象数据自动协会数据库。

(3)脱管:实例处于持久化状态,但与之相关的Session被关闭,对象则处于脱管状态。托管对象的引用依然有效,对象可被继续修改。脱管对象重新转换为持久化状态需与Session关联,而该对象在脱管期间的改动也会写入数据库。

3.把持久化类映射到表中

Account.hbm.xml文件用于映射Account类,若需映射多个持久化类,方法一:在同一个映射文件中映射所有类。方法二:为每一个类创建单独的映射文件,映射文件与类同名,扩展名为hbm.xml。

4.Hibernate采用XML文件配置对象-关系映射的优点:

(1)Hibernate不会渗透到上层域模型中,也不会渗透到下层数据模型中。

(2)软件开发人员可以独立设计域模型,不必强迫遵守任何规范。

(3)数据库设计人员可以独立设计数据模型。

(4)对象-关系不依赖于任何程序代码,如需修改对象-关系映射,只需修改XML文件,不需修改程序,提高了软件的灵活性,使维护更加方便。

时间: 2024-11-01 06:08:25

Hibernate的持久化的相关文章

hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)

三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,添?到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓

hibernate:持久化类映射文件

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.myschool.

三、hibernate中持久化类的使用

hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hibernate中就可以称之为持久化类 Java实体类 该Java类的映射文件 持久化类的使用 提供无参构造 从之前测试类中查询的使用来看: User user = session.get(User.class, 1); 说明hibernate内部是使用反射技术实现生成对象实例,所以持久化类中的Java

hibernate载入持久化对象的两种方式——get、load

一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更高.下边具体说一下get和load的不同,有些时候为了对照也会把find加进来. 1.从返回结果上对照: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索运行机制上对照: get方法和fin

Hibernate之持久化对象

时间:2017-1-19 23:00 --Hibernate持久化类的状态 1.持久化类:就是一个实体类与数据库建立了映射. 2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态:    1)瞬时态:transient(临时态)    2)持久态:persistent    3)脱管态:detached(离线态) --三种持久化对象的状态 1.三种持久化对象的状态    1)瞬时态        不存在持久化标识OID,尚未与Hibernate Session关联对象,被认为处于

hibernate中持久化类映射到数据表的注意事项。

在web项目中,我们用到hibernate的话要先在用java语言创建一个持久化的bean类,然后在映射到数据库中的表! 在这里我要说的是这个数据表的创建 应该使用SQL的DDL语言来完成,不要用management studio,我在做项目的时候用management studio建表导致id主键和java持久化类当中的id不匹配.报了很多错误,所以写此随笔作为警示. 我的栗子! 先贴我的映射文件 1 <?xml version="1.0" encoding="UTF

Hibernate对象持久化框架

JDBC:(Java Data Base Connectivity)java数据库连接 java.sql包提供JDBC API,可通过它编写訪问数据库的程序代码.当中经常使用的接口和类包含以下内容: DriverManager:驱动程序管理器,负责创建数据库连接 Connection:代表数据库连接 Statement:负责运行SQL语句 PreparedStatement:负责运行SQL语句,具有提前定义SQL语句的功能 ResultSet:代表SQL查询语句的查询结果集 Hibernate(

Spring Security 4 整合Hibernate 实现持久化登录验证(带源码)

上一篇文章:Spring Security 4 整合Hibernate Bcrypt密码加密(带源码) 原文地址:http://websystique.com/spring-security/spring-security-4-remember-me-example-with-hibernate/ [相关已翻译的本系列其他文章,点击分类里面的spring security 4] 本教程将使用Spring Security 4 和hibernate向你展示持久化登录验证. 在持久化登录验证中,应用

hibernate中持久化对象的生命周期(转载)

三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2, 持久化状态(Persistent):与session关联并且在数据库中有相应数据.已经持久化,加入到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3, 游离状态(Detached):持久化对象脱离了Session的对象.如Session缓存被清空的