Hibernate介绍与配置文件、jar包的说明(一)

分类: 学习 252人阅读 评论(0) 收藏 举报

在编写java程序的时候总会和数据库打交道,大家都知道java是面向对象的编程语言、

在java里面一切都是类,java里面用的是对象模型,对象模型包括的概念有:继承、多态等;

而数据库是关系模型,反映的是表与表的关系、关系模型包括的概念有:表、主键、外键等,

在我们编写java程序时需要将对象模型与关系模型进行转换,通常采用两种方法来转换这两种关系:

1、使用数据库连接技术手工编写代码对数据库进行增删改查(CURD)的操作、

这种方法比较繁琐,代码重复量也很大,耗时耗力。

2、使用ORM(ObjectRelation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB。

这种方法既方便又快捷。

 

我们来学习使用Hibernate

Hibernate的优点:

1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度

的简化DAO层的编码工作

3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持

各种关系数据库,从一对一到多对多的各种复杂关系。

 

Hibernate工作原理:

原理:

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory

3.打开Sesssion

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SesstionFactory

 

使用Hibernate引入的jar包和作用说明:

(Hibernate3.2示例)

 

Hibernate配置文件

 

hibernate.cfg.xml文件:

<!DOCTYPE hibernate-configuration PUBLIC

         "-//Hibernate/HibernateConfiguration DTD 3.0//EN"

         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

 

<hibernate-configuration>

         <session-factory>

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

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

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

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

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

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

                  

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

                  

                   <mappingresource="cn/zc/domain/User.hbm.xml"/>

                  

         </session-factory>

</hibernate-configuration>

 

常用配置信息:

 

hibernate.connection.url                                    数据库url地址

hibernate.connection.driver_class                             数据库驱动类名

hibernate.connection.username                             数据库用户名

hibernate.connection.password                            数据库密码

hibernate.dialect                                                 数据库方言

 

hibernate.hbm2ddl.auto            是否自动生成数据库create|update|create-drop|validate

                   

show_sql                                            输出所有SQL语句到控制台

hibernate.connection.isolation                            设置JDBC事务隔离级别。

 

<mapping resource="cn/zc/domain/User.hbm.xml"/>          实体类映射文件

 

对于hbm2dll.auto 各个取值的意义如下:

 

1.create-drop : hibernate一开始就发送一个drop语句,再执行create语句创建表,当sessionFactory关闭时又执行drop语句删除表。结果就是,当表存在时,首先会被drop掉,然后又创建,最终被drop,如果表不存在,一开始虽然hibernate还是会发送drop语句,当时因为表不存在而drop失败。

 

2.create:hibernate首先会发送一个drop语句,如果表存在则会被drop掉,然后hibernate再发送create语句创建表。

 

3.update:hibernate会首先查询数据库看是否存在此表,如果存在则不管,如果不存在则会先发送一个create语句创建一个表。

 

4.validate:每次插入数据之前都会验证数据库中的表结构和hbm文件的结构是否一致。如果表不存在,则报错。

posted on 2013-01-07 14:10  zhengbeibei  阅读(1190)  评论(0编辑  收藏  举报