1.1 hibernate概述

1.1.1 什么是

hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员

可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端

程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代

CMP,完成数据持久化的重任。

Hibernate就是一个持久层ORM的框架。对JDBC做了封装。

1.1.2 什么是ORM

ORM:Object Relational Mapping对象关系映射。

将对象与数据库中表建立映射关系,操作对象就可以操作数据库中表。

1.1.3    为什么学习Hibernate


hibernate入门——基础

1 简化了Dao层的编码工作  
  大大简化了数据访问层繁琐的重复性代码,加快了运行效率

2 程序更加面向对象
          可以不需要编写SQL语句,只需要操作相应的对象就可以完成数据库数据的crud操作

1.2  Hibernate的入门

1.2.1下载Hibernate的开发包

Hibernate提供了3.x 、4.x、 5.x版本

https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/



1.2.1  解压hibernate


hibernate入门——基础

documentation                  :Hibernate的开发规范和文档

lib                                         :Hibernate的开发使用的jar包

project                                :Hibernate的提供测试的工程。

1.2.3   创建项目,引入jar包

引入lib/required/*.jar

数据库驱动包(mysql)

日志包

hibernate入门——基础

1.2.4创建数据库和表

CREATE TABLE `cst_customer` (

  `cust_id` intAUTO_INCREMENT COMMENT '客户编号(主键)',

  `cust_name`varchar(32) NOT NULL COMMENT '客户名称(公司名称)',

 `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',  

 `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',

 `cust_level` varchar(32) 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=1 DEFAULTCHARSET=utf8;


1.2.5 创建实体类

hibernate入门——基础

当然必须有无参构造方法,每个成员变量的set、get方法,这里创建的实体类交持久化类,有其特定的编写规范,如下所示:

         持久化类的编写规范:


1 需要有无参构造器   hibernate是通过反射无参构造生成的对象
2 属性需要私有化
3 对外提供get/set方法
4 如果是基本类型(int)和包装类型(integer),尽量使用包装类型

5 持久化类不能被final修饰    延迟加载(load)就会变成立即加载(get)  hibernate的查询优化手段就没有  

6 持久化类必须要有标识属性
标识属性(OID属性) :只要是和表主键映射的属性,就可以成为标识属性(OID属性)
好处: hibernate要根据OID属性来区分2个对象是否是同一个

持久化类:只要与表做映射的实体类,都可以称为持久化类
  javabean+映射文件


持久化类: 只在dao层和数据库表打交道,很少参与到业务逻辑

1.2.6 创建Hibernate的映射文件

Hibernate的映射文件只要是一个XML文件就可以了。一般映射命名:类名.hbm.xml


<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mappingPUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

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

<hibernate-mapping>

    <!-- 建立映射关系:将类与表建立映射关系 -->

    <!--

        class标签:用于建立类与表的映射

            * name  :类的全路径

            * table :数据库表名称

     -->

    <class name="com.itheima.hibernate.domain.Customer"table="cst_customer">

        <!-- 建立类中的属性与表中的字段的映射 -->

        <!--

            id标签:用来建立表中的主键字段与类中的属性的映射

         -->

        <id name="cust_id"column="cust_id">

            <!-- 主键生成策略:-->

            <generator class="native"/>

        </id>

        <!-- 其他的属性都是用property建立映射 -->

        <property name="cust_name"column="cust_name"/>

        <property name="cust_source"column="cust_source"/>

        <property name="cust_industry"column="cust_industry"/>

        <property name="cust_level"column="cust_level"/>

        <property name="cust_phone"column="cust_phone"/>

        <property name="cust_mobile"column="cust_mobile"/>

    </class>

</hibernate-mapping>

1.2.7 创建Hibernate核心配置文件: 默认SRC下有个hibernate.cfg.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configurationPUBLIC

    "-//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:///hibernates</property>

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

        <property name="hibernate.connection.password">abcd</property>

        <!-- 配置Hibernate的相关属性 -->

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

        <!-- 可选属性 -->

        <!-- 显示SQL -->

        <property name="hibernate.show_sql">true</property>

        <!-- 格式化SQL -->

        <property name="hibernate.format_sql">true</property>

        <!-- hbm2ddl -->

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

       

        <!-- 加载映射文件: -->

        <mapping resource="com/itheima/hibernate/domain/Customer.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

1.2.8    编写代码

@Test

    /**

     * 保存客户

     */

    public void demo1(){

        // 1.加载核心配置文件:

        Configuration configuration = new Configuration().configure();

        // 2.创建一个SessionFactory对象(类似于连接池)

        SessionFactory sessionFactory = configuration.buildSessionFactory();

        // 3.获得Session对象(连接对象)

        Session session = sessionFactory.openSession();

        // 4.开启事务

        Transaction transaction = session.beginTransaction();

        // 5.操作

        Customer customer = new Customer();

        customer.setCust_name("郝宝强");

       

        session.save(customer);

       

        // 6.事务提交

        transaction.commit();

        // 7.资源释放

        session.close();

    }



下一节将讲解hibernate的常见配置与常用API



相关文章: