读书人

Hibernate原理与使用(一)

发布时间: 2012-12-24 10:43:14 作者: rapoo

Hibernate原理与应用(一)

一,Hibernate的引用

a 模型不匹配(阻抗不匹配)

Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。

b解决办法

1使用JDBC手工转换。

2使用ORM(Object RelationMapping对象关系映射)框架来解决。

二.Hibernate是一个开源ORM框架。

ORM全称Object RelationMapping,即对象关系映射。它是一种用来完成对象模型到关系模型的映射技术。

就是把应用程序中的对象数据持久化到关系数据库的表的一种技术。

使用ORM(ObjectRelation Mapping)框架来解决。主流的ORM框架有JBoss公司的Hibernate、Oracle公司的TopLink、Apache组织的OJB、Sun公司的JDO。

简单的说:ORM能利用面向对象的思想开放基于关系型数据库的应用程序,它的主要工作是将对象数据保存到关系数据库的表中,以及将关系数据库表中数据读入到对象中。

三.安装配置

下载地址http://www.hibernate.org,使用3.3版本。

解压获取必需类库文件

将下载目录/hibernate3.jar和/lib下的hibernate运行时必须的包加入classpath中:

1. antlr-2.7.6.jar 语言转换器

2. commons-collections-3.1.jar 用来增强java对集合的处理能力

3. dom4j-1.6.1.jar dom4j xml解析器

4. hibernate3.jar

5. javassist-3.4.GA.ja r 代码生成工具hibernate用他在运行时扩展java类

6. jta-1.1.jar 标准的java事务处理接口

7. log4j-1.2.15.jar

8. mysql-connector-java-5.1.5-bin.jar

9. slf4j-api-1.5.2.jar

10. slf4j-log4j12-1.5.2.jar

配置文件hibernate.cfg.xml和hibernate.properties,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。

可以在配置文件指定:

数据库的URL、用户名、密码、JDBC驱动类、方言等。

启动时Hibernate会在CLASSPATH里找这个配置文件。

四 映射文件(hbm.xml,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate:

步骤

1.新建java项目,并加入相应的jar包,及jdbc驱动。

2.创建持久化类

3.准备数据库表

4.创建配置文件 hibernate.cfg.xml

5.创建映射文件 xxx.hbm.xml

6.创建测试文件

Hibernate.connection.url 表示要链接的数据库地址

Hibernate.connection.driver_class 表示要链接的数据库的驱动类

Hibernate.connection.username 要连接的数据库的用户名

Hibernate.connection.password 要连接的数据库的密码

Hibernate.dialect 表示要使用的数据库的类型

org.hibernate.dialect.MySQL5Dialect mysql数据库

org.hibernate.dialect.Oracle9Dialect oracle数据库

org.hibernate.dialect.SQLServerDialect SQLServer数据库

hibernate.hbm2ddl.auto

validate:加载hibernate时验证创建表结构

update:加载hibernate时自动更新数据库结构,如果表存在不用创建,如果不存在就创建。

create:每一次加载hibernate时都创建表结构

create-drop:加载hibernate时创建,退出时删除

五 基本概念和CURD

开发流程

1、由Domainobject -> mapping->db。(官方推荐)

2、由DB开始,用工具生成mapping和Domainobject。(使用较多)

3、由映射文件开始。

Domain Object限制

1、默认的构造方法(必须的)。

2、有无意义的标示符id(主键)(可选)

3、非final的,对懒加载有影响(可选)

Domain Java Object(User)

public classUser {

private int id;

private String name;

private Date birthDay;

//getter setter…

}

1、xx.hbm.xml

<?xml version="1.0"?>

<hibernate-mapping package=“cn.itcast.domain">

<class name="User"table="user">

<idname="id">

<generatorclass="native"/>

</id>

<propertyname="name"/>

<propertyname="birthday”/>

</class>

</hibernate-mapping>

对象关系映射文件:把面向对象中的实体类对象映射到数据库中的实体(表的记录),把实体类之间的关联关系也映射到数据库中多个表之间的相互关系中。这样,在Hibernate中对这些实体对象的操作就直接转换为对数据库表的记录的操作。

<!DOCTYPEhibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>

<propertyname="connection.url">jdbc:mysql:///hibernate</property>

<propertyname="connection.username">root</property>

<propertyname="connection.password">root</property>

<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>

<propertyname="show_sql">true</property>

<propertyname="hbm2ddl.auto">update</property>

<mappingresource="com/hbsi/domain/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

1.Configuration类

是Hibernate的入口,它负责配置并启动Hibernate。Hibernate通过Configuration的实例加载配置文件信息,然后读取指定对象关系映射文件的内容并创建SessionFactory实例。

2.SessionFactory接口

负责初始化Hibernate。一个SessionFactory实例对应一个数据库。应用程序从SessionFactory中获得Session实例。

3.Session接口

Session被称为持久化管理器,负责管理与持久化相关的操作:存储、更新、删除和加载对象。

4.Transaction接口

是Hibernate框架的事务接口。它对底层的事务接口做了封装。包括:JDBC API和JTA。

1.Configuration类

是Hibernate的入口,它负责配置并启动Hibernate。Hibernate通过Configuration的实例加载配置文件信息,然后读取指定对象关系映射文件的内容并创建SessionFactory实例。

2.SessionFactory接口

负责初始化Hibernate。一个SessionFactory实例对应一个数据库。应用程序从SessionFactory中获得Session实例。

3.Session接口

Session被称为持久化管理器,负责管理与持久化相关的操作:存储、更新、删除和加载对象。

4.Transaction接口

是Hibernate框架的事务接口。它对底层的事务接口做了封装。包括:JDBC API和JTA。

读书人网 >软件架构设计

热点推荐