(一) Hibernate框架简介
Hibernate是数据持久化工具,也是一个开放源码的ORM解决方案。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。
Gaving King是Hibernate的创始人,那么他为什么要开发Hibernate框架呢?原因很简单,就是因为觉得开发效率太低 (也就是想偷懒!!!),经过2年努力,Gaving King 和他的开发团队终于推出了Hibernate。
(二) Hibernate是ORM解决方案
基于ORM,Hibernate在对象和关系数据库的表之间建立了一座桥梁,通过Hibernate,程序员就不需要在使用SQL语句操作数据库中的表,使用API直接操作JavaBean对象就可以实现数据的增删改查等操作。
(三) Hibernate框架的优点以及缺点
-
优点
1.Hibernate功能强大,是Java应用与关系数据库之间的桥梁,较之JDBC方式操作数据库,代码量大大减少,降低了维护成本。
2.Hibernate支持许多面向对象的特性(如组合,继承,多态等),方便开发人员进行领域驱动的面向对象的设计与开发。
3.可移植性好。系统不会绑定在某个特定的关系型数据库上,对于系统更换数据库,通常只要修改配置文件即可。
4.Hibernate框架开源免费,可以在需要时研究代码,改写代码,提高程序的可扩展性。 -
缺点
1.不适合以数据为中心大量使用储存过程的应用
2.大规模的批量插入,修改和删除不适合用Hibernate
(四) Hibernate环境搭建
1.需要的jar包
图中的jar包已经打包好了,
链接:https://pan.baidu.com/s/14wH13zcxM_FF0MKZ-L2DXA
提取码:3kin
链接失效联系补发。
将下载好的jar包部署到项目中去。然后进行下一步。
2.创建Hibernate配置文件hibernate.cfg.xml
这个配置文件主要用配置数据库连接和Hibernate运行时所需的各种特性。
在工程的src目录下添加Hibernate配置文件。该文件需要配置数据库连接信息和Hibernate的参数。示例如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库URL -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 数据库用户 -->
<property name="connection.username">scott</property>
<!-- 数据库用户密码 -->
<property name="connection.password">pan</property>
<!-- 数据库jdbc驱动 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 每个数据库都有其对应的方言(dialect)以匹配其平台特性 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 指定当前session范围和上下文 -->
<property name="current_session_context_class">thread</property>
<!-- 是否将运行期间生成的Sql输出到日志以供调试 -->
<property name="show_sql">true</property>
<!-- 是否格式化 -->
<property name="format_sql">true</property>
<mapping resource="cn/pojo/Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
其中几个常用参数的作用如下
- connection.url :表示数据库URL。jdbc:oracle:thin:@10.0.0.176:1521:orcl,是Oracle数据库的URL,其中jdbc:oracle:thin;@是固定写法,10.0.0.176是IP地址,1521是端口号,orcl是数据库实例名。
- connection.username:表示数据库用户名
- connection.password:表示数据库用户密码
- connection.driver.class:表示数据库驱动。oracle.jdbc.driver.OracleDriver是Oracle数据库的驱动类。
- dialect:用于配制Hibernate使用的数据库类型
- current_session_context_class:线程跟踪管理
- show_sql:如果设置为true,则程序运行时在控制台输出SQL。
- format_sql:如果设置为true,则程序运行时在控制台输出格式化后的SQL语句
ok,环境搭配好以后,接下来就是创建持久化类和映射文件
3.创建持久化类和映射文件
好的,我们先来创建一个持久化类,再来一波示例代码:
//实现Serializable接口,是为了实现实体类序列化
public class Dept implements Serializable{
/* 字段*/
/*
deptNo:用来唯一标识Dept类的每个实例,deptNo属性又称id属性,这个id属性被称为对象标识符。
*/
private Byte depNo;
private String deptName;
private String location;
public Dept(){
}
//省略getter/setter方法
}
映射文件的创建,示例如下
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.hibernatedemo.entity.Dept" table="Dept">
<id name="deptNo" type="java.lang.Byte" column="deptNo">
<generator class="assigned"/>
</id>
<property name="deptName" type="java.lang.String" column="deptName"/>
<property name="location" type" type="java.lang.String" column="location"/>
</class>
</hibernate-mapping>
映射文件中各元素的含义如下
class:定义一个持久化类的映射信息,常用属性如下
- name表示持久化类的全限定名.
- table表示持久化类对应的数据库表名
id:表示持久化类的OID和表的主键映射
- name表示持久化类属性的名称,和属性的访问器相匹配
- type表示持久化类属性的类型
- column表示持久化类属性对应的数据库表字段的名称。
注意!映射文件定义完成后,还需要在hibernate.cfg.xml配置文件中声明,示例代码如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--省略其他配置-->
<!--映射文件配置,注意文件名必须包含其相对于classpath的全路径-->
<mapping resource="cn/hibernatedemo/entity/Dept.hbm.xml"/>
</session-factory>
<hibernate-configuration>
----------------The End