Hibernate框架入門

首先分析一下什麼是框架?

      框架就是一個半成品項目,我們書寫項目可以從半成品開始寫。

      這樣能夠大大提高開發效率。

      不必糾結於框架本身的實現,只要學會如何使用這個框架即可。

複習一下什麼是Hibernate框架?

這個框架應用與dao層。

ORM:Object Relactional Mapping

實體類和數據庫表之間建立了聯繫,通過操作對象,直接對數據庫進行修改。

Hibernate框架搭建

第一步:導包

1、hibernate包下載地址

http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

2、Ant包下載地址:
http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip

MySQL JDBC Driver下載地址
http://dev.mysql.com/downloads/connector/j/3.0.html

PostgreSQL JDBC Driver下載地址
http://jdbc.postgresql.org/download.html

MS-SQL Server JDBC Driver下載地址
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en

導包步驟

 

2、準備一個實體類

(1)所有的屬性應該設置爲私有,並添加get和set方法

(2)構造函數要麼不寫,如果要寫至少要寫兩個(必須包含一個空的)

(3)屬性的類型應是包裝類型

package cn.hd.bean;

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private Integer balance;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getBalance() {
        return balance;
    }

    public void setBalance(Integer balance) {
        this.balance = balance;
    }

    public User(Integer id, String name, Integer age, String sex, Integer balance) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.balance = balance;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", balance=" + balance +
                '}';
    }
}

3準備數據庫

(1)數據庫必須由我們自己建,數據庫表,可以由hibernate自動創建,如果手動創建,表中的字段和實體類一一對應。

4 創建實體類和數據表之間的映射配置文件

創建一個   實體類名 + .hbm + .xml

建議這個文件的目錄和實體類在同一個目錄下。

<hibernate-mapping>
    <class name="cn.hd.bean.User" table="t_user">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="name" column="name"></property>
        <property name="age" column="age"></property>
        <property name="sex" column="sex"></property>
        <property name="balance" column="balance"></property>
    </class>
</hibernate-mapping>

5.書寫核心配置文件

名字必須是:hibernate.cfg.xml

文件的位置必須放在src目錄下

導入約束

<!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://localhost:3306/hibernate01</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

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

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

        <!--自動創建表-->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!--事務:4-->
        <property name="hibernate.connection.isolation">4</property>


        <mapping resource="cn/hd/bean/User.hbm.xml"></mapping>

    </session-factory>
</hibernate-configuration>

6.書寫Servlet

package cn.hd.test;

import cn.hd.bean.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Demo {
    public static void main(String[] args) {
        //讀取配置文件
        Configuration cfg = new Configuration();
        cfg.configure();//讀取配置

        //創建sessionFactory
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //獲得一個session對象
        Session session = sessionFactory.openSession();
        //開啓事務
        Transaction transaction = session.beginTransaction();
        User user = new User();
        user.setName("牧塵");
        user.setAge(20);
        user.setSex("男");
        user.setBalance(15000);

        session.save(user);
        //提交事務
        transaction.commit();
        //釋放資源
        session.close();
        sessionFactory.close();
    }
}

配置文件詳解

1、映射文件

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 下面class中的類的路徑,下面的class name 屬性可以縮寫 -->
<hibernate-mapping package="cn.hd.bean">
    <!-- 映射類和數據庫表之間的關係 -->
    <!-- name屬性是實體類名  寫完整路徑名 -->
    <!-- table屬性 數據庫表名字 -->
    <class name="User" table="t_user">
        <!-- 映射文件中必須擁有 主鍵id -->
        <id name="id" column="id">
            <!-- 主鍵生成策略
            identity:mysql自動遞增
            increment:當前最大序號+1
            sequence:Oracle數據庫中的自動遞增
            native :自動遞增(3和1)
            assigned:
            uuid:
             -->
            <generator class="native"></generator>
        </id>
        <!-- 基本屬性 在這裏可以設置數據庫的屬性
         字段名  類型  長度  不爲空  默認值
         -->
        <property name="name" column="name"></property>
        <property name="age" column="age"></property>
        <property name="sex" column="sex"></property>
        <property name="balance" column="balance"></property>
    </class>
</hibernate-mapping>

2、核心配置文件詳解

名字和位置都必須按照規定來。

<hibernate-configuration>
    <session-factory>
        <!--必須 數據庫連接屬性-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate01</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

        <!-- 方言 必須要設置-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- 在控制檯展示SQL語句 不必須-->
        <property name="hibernate.show_sql">true</property>
        <!-- SQL語句格式化輸出 -->
        <property name="hibernate.format_sql">true</property>

        <!-- 自動創建表
        1、update 如果映射文件和數據庫保持一致就不修改,如果沒有就自動創建表
        2、crate  每次執行都會重新創建一個表(覆蓋)
        3、create_drop 先將原來的表刪除,然後重建
        4、validate 只做校驗
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- 事務的隔離級別:
        1
        2
        4
        8
         髒讀
         幻讀
         不可重複讀
         串行化
         -->
        <property name="hibernate.connection.isolation">4</property>


        <!-- 掃描影射文件
        class:  影射文件和配置文件名字和路徑必須保持一致
        mapping:掃描該包下的所有配置文件
        resource: 指定某個確定XML配置文件
        -->
        <mapping resource="cn/hd/bean/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章