`

五:使用Hibernate完成对象持久化

    博客分类:
  • ssh
阅读更多
五:使用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的方法——考虑:这些方法写成静态的还是非静态的?为什么那样写?)






















分享到:
评论

相关推荐

    使用Hibernate完成对象持久化

    Hibernate持久化在框架开发中的使用

    Hibernate完成对象持久化

    在Struts中,循环显示List中的数据使用什么标签? 如何使用MVC模式组织Java Web应用? 程序的DAO层(数据访问层)完成什么任务?

    Hibernate:java对象持久化技术详解

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    对象关系映射,并持久化到数据库的开源组件

    对象持久化,将内存中的对象保存在外部永久的存储介质中(数据库);在适当的时候,还可以将持久 设备中数据恢复成对象。 Hibernate 是一种OR/M(object relation mapping)对象关系映射工具,是一个可以自动的根据...

    Java持久化数据结构详解.pdf

    对于整体系统,采取结构化方法针对系统的所有方面分析性能。CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。只有到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关...

    Hibernate框架包

     持久化:将我们想要保存的数据保存到硬盘上,也就是我们电脑的磁盘上,为什么叫持久化呢,就是数据能够保存的很久,所以叫持久化,现在对持久化的实现过程大多通过各种关系型数据库完成,所以我们常说的,将数据...

    Hibernate数据持久层框架.rar

    是一款持久层框架,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA的对象关系映射(ORM)模型是基于Hibernate。是一款面向对象的ORM框架,JPA不...

    hibernate4.3完整jar包

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的...

    hibernate的jar

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    hibernate需要的最小jar包

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数 据库表建立映射关系,是一个全自动的orm框架,hibernate...应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    hibernate资源框架

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    Hibernate-5-教程 详细教程 225页

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    hibernate5相关jar包

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

    Hibernate实战(第2版 中文高清版)

     第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不匹配   1.2.1 粒度问题   1.2.2 ...

    cocolian-data-mysql:支持将Protobuf Message对象持久化到MySQL中

    定义这个模块实现理念同Hibernate, 基于标签(protobuf 的option)来完成对持久化设置的描述,并通过持久化引擎来支持最终的实现。对于一个message的定义,对应的数据表的持久化选项:message TableOption {optional...

    Hibernate体系结构的概要图

    Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的...

    hibernate api

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。  ...

    hibernate-release-5.4.9.Final.zip

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

    hibernate-release-5.4.9.Final+5.1.2.Final.rar

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

    Hibernate 中文API文档

    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。

Global site tag (gtag.js) - Google Analytics