五:使用Hibernate完成对象持久化
transient 瞬时的
persistent 持久的
detached 分离的
transaction 事务
generator 发生器
fetch 取得
capability 能力
目标
5.1为什么需要Hibernate
5.2Hibernate是什么
5.2.1持久化
5.2.2对象—关系映射
5.3使用Hibernate的基本步骤
5.3.1准备工作
5.3.2使用Hibernate实现用户添加
5.4使用Hibernate实现数据库的删改
5.5使用工具简化Hibernate开发
5.6在项目中使用Hibernate
小结:
5.1:为什么需要Hibernate
实现更高效的数据库访问,精简数据访问层代码,缩短项目开发时间。
5.2:Hibernate是什么
是一个优秀的Java持久化层解决方案,是当今主流的对象——关系映射工具。重量级持久化框架。
5.2.1:持久化
瞬时状态(Transient)的数据:在程序运行时,保存在内存当中的程序数据,程序退出,数据消失。
持久状态(Persistent)的数据:当程序退出时,数据还以文件等形式保存在存储设备(硬盘,光盘等)中。
持久化:将程序中的数据在瞬时状态和持久状态间转换的机制。
持久化机制:JDBC;实现:将程序中的数据直接保存成文本文件,保存到数据库。
DAO层(数据访问层)也可称之为持久化层,承担的主要工作即将数据保存到数据库或从数据库中读取出来。
5.2.2:对象—关系映射
理解:我们多以面向对象的方式组织程序,瞬时的数据也多以对象的形式存在,而持久化的数据多保存在关系型数据库中。所以,持久化工作主要在O(Object,对象)和R(Relational Database,关系型数据)之间完成。Hibernate:在JDBC的方式上进行封装,以简化JDBC方式繁琐的编码工作。(不用编写SQl语句,不用为每个字段置PreparedStatement中参数的值,只需要简单的执行session.save(user)即可把user对象保存到数据库中。
对象—关系映射机制(O/R Mapping ,ORM):保存对象和关系数据库表的映射信息,当数据在对象和关系数据库中转换的时候,协助正确的转换。(编写程序时以面向对象方式处理数据,保存数据的时候却以关系型数据库的方式存储,客观上需要一种两者间的转换机制)
5.3:使用Hibernate的基本步骤
5.3.1:准备工作
(3个准备:提供项目对Hibernate的支持,Hibernate.cfg.xml,User.hbm.xml)
1,需要的Jar包;
(hibernate3.jar是Hibernate的核心包;asm相关包用来支持字节码的动态生成,是必需的;common-*包是Apache Common项目提供的,包含集集合工具,日志,接口等,Hibernate实现过程中使用了这些开源工具)
2,Hibernate配置文件(7个);
4个连接参数(hibernate.connection.*),一个必需的方言dialect(<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>),一条声明——在另外的映射文件中定义的数据库表和实体的映射信息。
一个SQL语句是否输出的配置(<property name="hibernate.show_sql">true</property>),一个工具类的使
用(<property name="hibernate.hbm2ddl.auto">update</property>),还有每个实体类对应的配置文件的
信息的配置(<mapping resource="pojo/Qx.hbm.xml"/>)。
3,实体类和映射文件
定义的实体类需要:实现implements java.io.Serializable接口,添加默认构造方法。
在映射文件中配置实体类映射到数据库的那张表,哪个属性对应到数据库的哪个字段。
5.3.2:使用Hibernate实现用户添加
七个步骤:
1,读取并解析配置文件————相当于使用DataSource获取连接前读取DataSource的配置文件
2,读取并解析映射信息,创建SessionFactory————相当于创建DataSource对象
3,打开session————相当于JDBC获得连接
4,开始事务(增删改操作必须,查询操作可选)————开始事务
5,持久化操作————相当于JDBC的持久化操作
6,提交事务————提交事务
7,关闭连接
5.4:使用Hibernate实现数据库的删改
5.5:使用工具简化Hibernate开发
简化开发:充分利用工具,精巧的设计。
1,简化“三个准备”:
使用工具给项目添加Hibernate支持,自动添加Hibernate配置文件。
DB Connection Profile,使用向导配置数据库连接信息:在Database Profile对话框中,Profile name可以随便起名,URL必需填写 正确,在Schema Details对话框中,选择正确的数据库,单击完成,MyEclipse就会自动在Hibernate配置文件中配置好数据库参数。
Properties部分和Mapping部分也有相应的向导。
映射文件使用工具自动生成:从Eclipse工作区右上角选择进入MyEclipse Database Explorer透视图(可以通过菜单“窗口”—“透 视图”—“MyEclipse Database Explorer”进入),在DB Browser(数据库浏览器)视图中,逐次展开节点,用鼠标右键选择 TBL_USER表,在弹出的菜单中选择“Hiberante Reverse Engineering”(Hibernate反向工程),再弹出的对话框中选择生成实体类和 映射文件的包名(Java Package),选中“Hibernate mapping file....”复选框,表示要生成的映射文件;选中“Java Data Object....”复选框表示要生成实体类。单击下一步,在“Config type mapping details”对话框中,ID Generator选“native”, 继续 单击“下一步”,在“Config reverse engineering details”中,保持所有复选框为选中,单击“完成”按钮。
2,简化“七个步骤”(使用提取重复代码到基类):
在给项目添加Hiernate支持的过程中还生成了一个“HibernateSessionFactory”工具类。
将“套路”代码提取到BaseHibernateDAO中,如下:
(注意:get和delet的传入参数类型为Class和Serializable。Class表示“类”,可以通过“类名.class”得 到其实例;
Serializable是一个接口,不包含任何需要实现的方法,只是表示实现这个接口的类可以序列化)
5.6:在项目中使用Hibernate(5.5的第二点)
小结:
“三个准备”,”七个步骤“,使用工具简化“三个准备”,使用提取重复代码到基类简化“七个步骤”。
注意:
一,对工具类的使用
1,org.hibernate.tool.hbm2ddl.SchemaExport
相关配置:
在hibernate.cfg.xml文件中,<property name="hibernate.hbm2ddl.auto">update</property>
源代码的编写:
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
Configuration con=new Configuration().configure();
SchemaExport se=new SchemaExport(con);
se.create(true, true);
}
}
作用:
根据实体类的配置文件在建好的数据库自动生成表,配置文件中的update代表每次都进行更新,而create的话则是进行创建(如果表存在则会报出异常)
二,BaseHibernateDao的套路代码(通用的增删改查方法以及获得和关闭session的方法——考虑:这些方法写成静态的还是非静态的?为什么那样写?)
分享到:
相关推荐
在Struts中,循环显示List中的数据使用什么标签? 如何使用MVC模式组织Java Web应用? 程序的DAO层(数据访问层)完成什么任务?
例如,使用`save()`或`saveOrUpdate()`方法可以将对象持久化到数据库,`get()`和`load()`用于根据ID获取对象,`update()`和`merge()`用于更新对象,`delete()`则用于删除对象。 事务管理是数据库操作中的关键部分。...
Hibernate 操作持久化对象是Java开发中用于简化数据库交互的重要工具。它是一个开源的Java持久化框架,由Gavin King创建,并逐渐发展成为Java世界中主流的持久化解决方案。Hibernate的核心在于提供对象-关系映射(ORM...
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它能够将数据库中的数据与Java对象进行映射,从而简化数据库操作。"Hibernate自动生成持久化类和映射文件"这个话题主要涉及如何利用...
### 使用Hibernate对象持久化服务简化Java数据库访问 #### 摘要 Hibernate作为一个高效且功能丰富的对象关系映射(ORM)框架,在Java开发领域扮演着举足轻重的角色。通过强大的映射机制,Hibernate能够将Java对象...
总结来说,Hibernate的数据持久化机制是通过ORM技术将Java对象与数据库表进行绑定,使得开发者可以通过简单的对象操作实现对数据库的复杂操作。理解并熟练运用Hibernate,不仅可以提高开发效率,还能使应用程序更加...
通过持久化,我们可以将应用程序中的对象状态保存到数据库中,以便在后续的使用中能恢复这些状态,而无需每次都需要重新从数据库查询。这提高了效率,减少了对数据库的直接操作,有助于降低系统复杂性。 ORM(对象...
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
使用Hibernate进行对象持久化时,主要有以下几个核心概念: 1. Session:这是Hibernate的核心接口,负责管理对象的生命周期,包括对象的加载、保存、更新和删除。Session也提供了事务管理和缓存机制。 2. ...
1. 数据持久化:使用Hibernate的ORM框架和持久化功能实现数据的持久化存储和访问。 2. 数据自动映射:使用Hibernate的ORM框架实现数据的自动映射,减少数据库操作的代码量。 3. 事务管理:使用Hibernate的事务接口...
Struts2负责控制层,Spring负责业务层和持久层的管理,而Hibernate则负责数据的持久化。在SSH项目中,Spring可以管理Hibernate SessionFactory,通过依赖注入(DI)提供给其他组件使用,这样可以实现更好的解耦。 ...
### 精通Hibernate持久化对象技术 #### Hibernate概述 Hibernate是一种开源的对象关系映射(Object Relational Mapping,ORM)框架,它为Java应用程序提供了一种简单、灵活的方式来与数据库进行交互。通过...
* 对象持久化:将Java对象持久化到关系数据库中 * 对象查询:从关系数据库中查询Java对象 四、Hibernate在网上购书系统中的应用 在网上购书系统中,Hibernate可以用于实现业务层的基本功能,例如用户管理、订单...
五、持久化操作 1. 插入数据:调用Session的save()或saveOrUpdate()方法,Hibernate会自动为无ID的对象生成ID,并将其保存到数据库。 2. 更新数据:使用update()或saveOrUpdate()方法更新已存在的实体状态。 3. 删除...
总的来说,Hibernate的Session接口提供了一套完整的对象持久化和数据库操作机制,使得开发者能够以面向对象的方式处理数据,极大地提高了开发效率和代码的可读性。通过深入理解和熟练运用Session,可以轻松地在Java...
根据提供的标题“Java对象持久化技术详解”及描述“Java对象持久化技术详解 hibernate的资料很少这个是本好书”,我们可以围绕Java对象持久化的概念、意义以及在Hibernate框架中的应用进行深入探讨。 ### Java对象...
3. Hibernate的持久化功能:Hibernate的持久化功能可以将Java对象持久化到数据库中,使得数据可以被永久保存。 4. Hibernate的六个核心接口:Session、SessionFactory、Transaction、Query、Criteria和...