【Hibernate學習筆記】hibernate入門

1.Hibernate是什麼java

Hibernate是一個輕量級的ORMapping對象。主要用來實現Java和數據庫表之間的映射,除此以外還提供數據查詢和數據獲取的方法,能夠大幅度減小開發時人工使用SQL和JDBC處理數據的時間,解放編程人員95%的任務。mysql

如下是Hibernate的特徵(對應規則):sql

(1).類和表的對應數據庫

(2).類的屬性和表的字段對應編程

(3).類的實例和表中的具體一條記錄對應緩存

(4).一個類對應多個表,一個表也能夠對應多個類安全

(5).DB中的表能夠沒有主鍵,可是Object中必須設置主鍵字段session

(6).DB中表與表之間的映射成Object之間的關係app

(7).Object中屬性個數以及屬性名稱能夠和DB中表的字段數目以及字段名稱不一致ide

                                                Object和DB的工做原理:

                           

 

 

2.Hibernate有什麼

Hibernate將應用層從底層的JDBC/JTA API中抽象出來,而讓Hibernate去處理

                                                   Hibernate體系結構

                     

 

 ·SessionFactory:針對單個數據庫映射關係通過編譯後的內存鏡像,是線程安全的的(不可變),它是生成Session的工廠。

 ·Session:表示應用程序層與持久存儲層之間的交互操做的一個單線程對象,此對象聲明週期很短,隱藏了JDBC的鏈接,也是Transaction工廠。

 ·Transaction:應用程序用來指定原子操做單元範圍的對象,它是單線程的,生命週期很短。它經過抽象將應用程序從底層具體的JDBC,JTA,CORBA事物隔離開。

 ·ConnectionProvider:生成JDBC鏈接的工廠(有數據庫鏈接池的做用),經過抽象將應用從底層的DataSource或者DriverManager隔離開,供開發者使用。

 ·TransactionFactory:生成Transaction的工廠,供開發者使用。

 

3.Hibernate入門:Hello World

咱們將完成如下的四個操做:Object,數據庫表,兩種配置文件,客戶端程序調用Hibernate接口。

第一步:建立工程,將hibernate-release中lib下的required下面的包所有jar包以及slf4j-log4j12-1.5.8.jar,log4j-1.2.16.jar以及JDBC驅動包導入工程下的lib目錄

 

第二步: Object類,有一下幾個字段:uuid,userId,name,age

 1 package com.hb;
 2 
 3 public class UserModel {
 4     private String uuid;
 5     private String userId;
 6     private String name;
 7     private int age;
 8     public UserModel() {
 9         // TODO Auto-generated constructor stub
10     }
11     public String getUuid() {
12         return uuid;
13     }
14     public void setUuid(String uuid) {
15         this.uuid = uuid;
16     }
17     public String getUserId() {
18         return userId;
19     }
20     public void setUserId(String userId) {
21         this.userId = userId;
22     }
23     public String getName() {
24         return name;
25     }
26     public void setName(String name) {
27         this.name = name;
28     }
29     public int getAge() {
30         return age;
31     }
32     public void setAge(int age) {
33         this.age = age;
34     }
35 }

 

 

第三步:建立數據庫的表(使用的是mysql數據庫)

第四步:配置***.cfg.xml文件

(1).缺省的名字是hibernate.cfg.xml

(2).將文件存放到classe跟s目錄下,開發中將其存放在src的根目錄下便可。

(3).主要配置如下的四個部分:

     1.與DB的鏈接

     2.可選的配置

     3.資源文件配置

     4.二級緩存

(4).配置以下:

<!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>
        <!-- 在執行數據查詢時,是否顯示sql語句 -->
        <property name="hibernate.show_sql">true</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">tangjie</property>
        <property name="connection.pool_size">2</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>

        <!-- 添加影射文件 -->
        <mapping resource="com/hb/UserModel.hbm.xml" />
        
    </session-factory>
</hibernate-configuration>

 

第五步:配置***.hbm.xml

(1).與被描述的類同名,如:UserModel.hbm.xml

(2).存放位置與所描述類存放在同一文件夾下

(3).主要有以下四部分配置:

     1.類和表的映射

     2.主鍵的映射

     3.類的屬性和DB字段的映射

     4.關係的映射

     5.配置以下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
    <class name="cn.javass.h4.hello.UserModel" table="tbl_user">
        <id name="uuid">
            <generator class="assigned" />
        </id>
        <property name="userId"></property>
        <property name="name"></property>
        <property name="age"></property>
    </class>
</hibernate-mapping>

第六步:編寫客戶端類

 1 package com.hb;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.Transaction;
 6 import org.hibernate.cfg.Configuration;
 7 
 8 public class Client {
 9 
10     public static void main(String[] args) {
11         // 讀取hibernate.cfg.xml文件,建立Session工廠
12         SessionFactory sf = new Configuration().configure()
13                 .buildSessionFactory();
14 
15         Session s = null;
16         Transaction t = null;
17 
18         try {
19             // 準備數據
20             UserModel um = new UserModel();
21             um.setUuid("1");
22             um.setUserId("id1");
23             um.setName("name1");
24             um.setAge(1);
25             // 得到session對象
26             s = sf.openSession();
27             t = s.beginTransaction();
28             s.save(um);
29             t.commit();
30         } catch (Exception err) {
31             t.rollback();
32             err.printStackTrace();
33         } finally {
34             s.close();
35         }
36     }
37 }

 

運行結果如圖所示:

 

 

到這裏,咱們完成了第一個Hibernate的案例,學會最基礎的用法。後續學習筆記會持續更新...

 

 ·

相關文章
相關標籤/搜索