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). 编写代码。