1.Hibernate框架简述

Hibernate的核心组件
在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。
除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:
a)Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:产生Session实例工厂。
c)Session接口:用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。
d)Query接口:用来对PO进行查询操。它可以从Session的createQuery()方法生成。
e)Transaction接口:用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTrancation()方法生成。

Persistent Object
持久化对象可以是普通的Javabeans,惟一特殊的是它们与(仅一个)Session相关联。JavaBeans在Hibernate中存在三种状态:
1.临时状态(transient):当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有任何关联关系时,那么这个JavaBeans对象就称为临时对象(Transient Object)。
2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时,就变成持久化对象(Persistent Object)
3.脱管状态(detached):在这个Session被关闭的同时,这个对象也会脱离持久化状态,就变成脱管状态(Detached Object),可以被应用程序的任何层自由使用,例如可以做与表示层打交道的数据舆对象(Data Transfer Object)。

Hibernate的运行过程Hibernate的运行过程如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactpry对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将 提交这些操作结果到数据库中。

Hibernate的运行过程如下图:

hibernate框架 java hibernate框架的组成_配置文件

2.入门案例

hibernate框架 java hibernate框架的组成_hibernate框架 java_02

1.客户的实体类

  /**

  *  get和set方法

  */

2在实体类下设计映射文件Custormer.hbm.xml(在配置文件hibernate.cfg.xml使用)

<!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="entity.Custormer" table="cst_customer">
            <id name="cust_id" column="cust_id">
              <generator class="native" ></generator>
            </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_industry" column="cust_industry"/>
              <property name="cust_level" column="cust_level"/>  
             
              <property name="cust_mobile" column="cust_mobile"/>
        </class>
    </hibernate-mapping>

 

3.在src下设计Hibernate配置文件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>
        <!-- 需要配置5大参数:JDBC的4大参数,数据库的方言 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///db_name?useUnicode=true&characterEncoding=UTF-8 </property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">root</property>
    <!--可选参数  -->
            <property name="hibernate.show_sql"> true</property><!--显示SQL语句  -->
            <property name="hibernate.format_sql"> true</property><!--将SQL语句格式化  -->
            <!-- <property name="hibernate.hbm2ddl.auto">create</property>自动建表
            <property name="hibernate.hbm2ddl.auto">update</property> -->
            
           <!-- 引入映射配置文件 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <mapping resource="entity/Custormer.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

3.配置的方法

public class Hibernate {
    private static final Configuration CONFIG;
    private static final SessionFactory FACTORY;
    
    static{
        CONFIG=new Configuration().configure();
        FACTORY=CONFIG.buildSessionFactory();
    }
    
    public static Session opensession(){
        return FACTORY.openSession();
        
    }
}

 

4. 测试类 增加客户的方法

public class TestDemo {
    @Test
    public void run() {
        /*
         * 1.加载配置文件 2.创建sessionFactory 3.创建session对象 4.开启事务 5.保存客户 6.提交事务 7.释放资源
         */
        Session session = Hibernate.opensession();
        Transaction ta = session.beginTransaction();

        Custormer c = new Custormer();
        c.setCust_name("北京");
        c.setCust_phone("66666666");
        c.setCust_level("高级工程师");
        try {
            session.save(c);
            ta.commit();
        } catch (Exception e) {
            e.printStackTrace();
            ta.rollback();
        } finally {
            session.close();
        }
    }
}