Hibernate:HIbernate配置詳解-HelloWorld

hibernate介紹:html

     Hibernate是一個開源的對象關係映射框架,它對JDBC進行了輕量級的對象封裝,使Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫java

它不只提供了從java類到數據庫表之間的映射,也提供了數據查詢和恢復機制。相對於使用JDBC和SQL來手工操做數據庫,Hibernate能夠大大減小mysql

操做數據庫的工做量。另外Hibernate能夠利用代理模式簡化載入類的過程,這將大大減小利用Hql從數據庫提取數據的代碼編寫量,從而節約開發時間程序員

和開發成本Hibernate能夠和多種web服務器或者應用服務器良好集成,現在已經支持幾乎全部的流行數據庫服務器。web

 

2. Hibernate原理:sql

     Hibernate技術本質上是一個提供數據庫服務的中間件。Hibernate的工做原理,他是利用數據庫以及其餘一些配置文件如:hibernate.cfg.xml,數據庫

xxx.hbm.xml等來爲應用程序提供數據持久化服務的。編程

  1.   Configuration來讀取hibernate.cfg.xml文件
  2.   使用Configuration對象建立SessionFactory
  3.   用SessionFactory來打開一個Session
  4.   建立事務Transaction
  5.   begin事務
  6.   使用Session進行數據庫操做
  7.   關閉或回滾事務
  8.   關閉Session

 

3. 配置Hibernate 聲明:我使用的是JDK1.7,Hibernate3.6.0服務器

  3.1 導入相關Jar包:Hibernate模式不僅是本身內部實現,一樣也導入了許多外部的jar包,下面是Hibernate3.6.0框架的基本jar包session

    我使用的是mysql數據庫,能夠根據本身使用的數據庫添加相關驅動Jar包

 

  3.2 先建立一個User實體

 1 package com.a_helloworld;  2  3 public class User {  4  5 private int id;  6 private String name;  7 public int getId() {  8 return id;  9  } 10 public void setId(int id) { 11 this.id = id; 12  } 13 public String getName() { 14 return name; 15  } 16 public void setName(String name) { 17 this.name = name; 18  } 19 20  @Override 21 public String toString() { 22 return "User [id=" + id + ", name=" + name + "]"; 23  } 24 25 26 }

 

 

  3.3 配置User實體在數據庫表的映射user.hbm.xml

    

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.a_helloworld"> <!-- 屬性table 表示在數據庫中的表名 --> <class name="User" table="user_1" > <id name="id" column="id" type="int"> <!-- 值native表示會根據數據庫來建立不一樣的主鍵生成策略 --> <generator class="native"></generator> </id> <property name="name" column="name" type="string"></property> </class> </hibernate-mapping>

 

 

  3.4 簡單配置hibernate.cfg.xml配置文件,這個文件名能夠隨便修改(xxx.cfg.xml),可是沒多大意義,通常不建議修改。配置的信息以下:

    

 1 <!DOCTYPE hibernate-configuration PUBLIC  2  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  3  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 4 
 5 <hibernate-configuration>
 6     <session-factory name="foo">
 7     
 8         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 9         <property name="connection.username">root</property>
10         <property name="connection.password">123456</property>
11         <property name="connection.url">jdbc:mysql:///user</property>
12         
13         <!-- 要根據本身使用的數據庫來配置相對應的屬性,也成方言,針對不一樣數據庫 14  關於怎麼配置能夠查看HibernateAPI 15          -->
16         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
17         
18         <!-- Hibernate 創建的SQL語句會顯示在控制檯 -->
19         <property name="hibernate.show_sql">true</property>
20         
21         <!-- 選擇方案,經常使用值:validate | update | create | create-drop -->
22         <property name="hbm2ddl.auto">update</property>
23         
24         <mapping resource="com/a_helloworld/user.hbm.xml"/> -- 導入實體映射配置,程序每次啓動都會自動檢索
25         
26     </session-factory>
27 </hibernate-configuration>

 

以上Hibernate簡單配置已經基本完成,能夠添加一個測試類來測試是否成功

    

package com.a_helloworld; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.Session; import org.junit.Test; public class Demo { private static SessionFactory sf = new Configuration()//             .configure("hibernate.cfg.xml")//  .buildSessionFactory(); @Test public void addUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一個Session
            tran = session.beginTransaction(); //開啓事務
 User user = new User(); user.setName("張三"); session.save(user); tran.commit();//事務提交
        }catch(Exception e){ tran.rollback(); //事務回滾
            throw(e); }finally{ session.close(); //關閉session
 } } @Test public void getUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一個Session
            tran = session.beginTransaction(); //開啓事務
            
            /*這裏指明你要得到哪一個類型,Hibernate會根據類名查詢映射配置文件到數據庫查詢哪張表,根據指定 * id查詢實體,經過反射機制建立實體對象 */ User user = (User) session.get(User.class, 1); //執行查詢,get
 tran.commit();//事務提交
        }catch(Exception e){ tran.rollback(); //事務回滾
            throw(e); }finally{ session.close(); //關閉session
 } } @Test public void updateUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一個Session
            tran = session.beginTransaction(); //開啓事務
 User user = new User(); user.setId(1);//這裏指定了要更新的數據id爲1
            user.setName("李四");// 把名字 「張三」 修改成 「李四」 
            session.update(user);//執行更新 
 tran.commit();//事務提交
        }catch(Exception e){ tran.rollback(); //事務回滾
            throw(e); }finally{ session.close(); //關閉session
 } } @Test public void deleteUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一個Session
            tran = session.beginTransaction(); //開啓事務
 User user = new User(); user.setId(1);//這裏指定了要更新的數據id爲1
            session.delete(user); //執行刪除
 tran.commit();//事務提交
        }catch(Exception e){ tran.rollback(); //事務回滾
            throw(e); }finally{ session.close(); //關閉session
 } } }

 

 

 

 

  如需轉載請說明出處:http://www.cnblogs.com/gudu1/p/6879990.html 

相關文章
相關標籤/搜索