Hibernate 快速入门。
Hibernate框架的概述
Hibernate 是一个开放源代码的对象关系映射(ORM)框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用。
Hibernate 是轻量级 JavaEE 应用的持久层解决方案,是一个关系数据库 ORM 框架。
Hibernate是一个持久层的ORM框架!!!
ORM(对象关系映射)
ORM 映射:Object Relational Mapping
- O:面向对象领域的 Object (
JavaBean 对象
)
- R:关系数据库领域的 Relational (
表的结构
)
- M:映射 Mapping (
XML 的配置文件
)
简而言之:Hibernate 使程序员通过操作对象的方式来操作数据库表记录。
Hibernate 优点
Hibernate 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码;
Hibernate是一个基于 JDBC 的主流持久化框架,是一个优秀的 orm 实现,它很大程度的简化了 dao 层编码工作;
Hibernate 的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。
Hibernate 框架入门
下载 Hibernate 运行环境
下载对应的 jar 包
点击下载 Hibernate 5.0.7
Hibernate 目录结构
1 2 3 4 5 6 7
| | -- documents 相关的文档 | -- lib jar包 | | -- jpa sun 公司提供的 orm 框架的规范 | | -- required 必需要引入的包 | | -- optional 可选的包(c3p0 等) | -- project 提供的一些小项目(无关紧要) | | -- etc 配置文件
|
创建表结构
建表语句如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Create database hibernate_01; Use hibernate_01; CREATE TABLE `cst_customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)', `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id', `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id', `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源', `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业', `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别', `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人', `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话', `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话', PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
|
搭建 Hibernate 的开发环境
创建WEB工程,引入 Hibernate 开发所需要的 jar 包
1
| - mysql-connector-java-5.1.7-bin.jar
|
1 2 3
| - log4j-1.2.16.jar // log for java,具体的日志实现 - slf4j-api-1.6.1.jar // log4j 规范,接口 - slf4j-log4j12-1.7.2.jar // 整合的
|
编写 JavaBean 实体类
Customer
类的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class Customer { private Long cust_id; private String cust_name; private Long cust_user_id; private Long cust_create_id; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; private String cust_phone; private String cust_mobile; }
|
创建类与表结构的映射
在JavaBean所在的包下创建映射的配置文件
1 2 3
| <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
如果不能上网,编写配置文件是没有提示的,需要自己来配置
Eclipse:
Idea:貌似不存在这样的问题
idea 很智能,能自己找到 jar 包下的 dtd 文件。
编写映射的配置文件
Customer.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?xml version="1.0" encoding="UTF-8"?> <!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="com.renkaigis.domain.Customer" table="cst_customer">
<id name="cust_id" column="cust_id"> <generator class="native"/> </id> <property name="cust_name" column="cust_name"/> <property name="cust_user_id" column="cust_user_id"/> <property name="cust_create_id" column="cust_create_id"/> <property name="cust_source" column="cust_source"/> <property name="cust_industry" column="cust_industry"/> <property name="cust_level" column="cust_level"/> <property name="cust_linkman" column="cust_linkman"/> <property name="cust_phone" column="cust_phone"/> <property name="cust_mobile" column="cust_mobile"/> </class> </hibernate-mapping>
|
编写 Hibernate 核心的配置文件**
创建配置文件
在 src 目录下,创建名称为 hibernate.cfg.xml 的配置文件
在XML中引入DTD约束
1 2 3
| <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
|
配置参数
打开:../hibernate-release-5.0.7.Final/project/etc/hibernate.properties
,可以查看具体的配置信息
必须配置的4大参数
注: 前面的是属性的 name,后面是属性的 value 值
1 2 3 4
| #hibernate.connection.driver_class com.mysql.jdbc.Driver #hibernate.connection.url jdbc:mysql:///hibernate_01 #hibernate.connection.username root #hibernate.connection.password 123456
|
数据库的方言(必须配置的)
1
| #hibernate.dialect org.hibernate.dialect.MySQLDialect
|
可选的配置
1 2 3
| #hibernate.show_sql true #hibernate.format_sql true #hibernate.hbm2ddl.auto update
|
引入映射配置文件
(必须要引入映射文件,框架需要加载映射文件)
1
| <mapping resource="com/itheima/domain/Customer.hbm.xml"/>
|
核心配置文件
hibernate.cfg.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="UTF-8"?> <!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> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_01</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="com/renkaigis/domain/Customer.hbm.xml"/> </session-factory> </hibernate-configuration>
|
编写 Hibernate 入门代码
- 先加载配置文件
- 创建 SessionFactory 对象,生成 Session 对象
- 创建 Session 对象
- 开启事务
- 编写保存的代码
- 提交事物
- 释放资源
具体的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
@Test public void testSave() { Configuration config = new Configuration(); config.configure();
SessionFactory factory = config.buildSessionFactory(); Session session = factory.openSession(); Transaction tr = session.beginTransaction();
Customer c=new Customer(); c.setCust_name("测试"); c.setCust_level("2"); c.setCust_phone("110"); session.save(c);
tr.commit(); session.close(); factory.close(); }
|
总结
1). 下载 Hibernate 框架的开发包;
2). 编写数据库和表结构;
3). 创建 WEB 的项目,导入了开发的 jar 包;
- MySQL 驱动包、Hibernate 开发的必须要有的 jar 包、日志的 jar 包
4). 编写 JavaBean ,不要使用基本数据类型,使用包装类;
5). 编写映射的配置文件(核心),先导入开发的约束,里面正常配置标签;
6). 编写 hibernate 的核心的配置文件,里面的内容是固定的;
7). 编写代码。