hibernate初識

這篇博客是hibernate學習的第一篇,主要簡單介紹hibernate框架,之後簡單說一下hibernate的目錄結構,最後寫一個簡單的hibernate實例。通過這三步來簡單的認識一下hibernate。

 

廢話不多說,步入正題。首先簡單介紹一下hibernate框架,它是一種基於JDBC的主流持久化框架,是一個優秀的orm實現;它對JDBC進行了輕量級的封裝,大大簡化了數據訪問層繁雜的重複代碼;而且它利用了Java反射機制來實現程序的透明性;它的本意是從對象出發而非關係數據庫出發,這一點也就是說明它是以面向對象思維解決數據庫的操作問題。

 

以上是從概念上說的hibernate,下面來看一下hibernate目錄結構:


 


這就是解壓出來的hibernate的目錄文件,在這裏面doc目錄爲文檔,lib目錄爲所用的庫文件,src爲hibernate源代碼,hibernate3.jar爲打包後的字節碼文件。另外一些隨後博客遇到再介紹。

 

這裏要說的學習hibernate框架始終和3個比較重要的文件打交道,即hibernate本身的配置文件hibernate.cfg.xml文件,這個文件用來配置hibernate自身屬性,數據庫驅動、數據庫連接和數據庫方言;另外一個是對象關係映射配置文件,如UserInfo.hbm.xml。此文件負責實體對象到關係數據庫映射。最後一個就是我們常見的持久化類了,也就是對象現實中的實體。

 

有了上面的基礎,我們來一步一步的實現一個hibernate實例。

 

1.      在eclipse中配置hibernate環境:

我們首先建立一個項目,名叫hibernate_first,之後自定義個存放jar包的庫,就取名爲UserLibrary;導入相關的包,這些包包括相應數據庫驅動、hibernate目錄下lib文件夾下的jar包,還有hibernate目錄下的hibernate3.jar。



2.      導入hibernate.cfg.xml,並且配置數據庫連接:

將hibernate目錄下的hibernate.cfg.xml文件導入項目的src目錄下,之後配置數據庫連接信息,我們這個實例選取的是用MySQL作爲數據庫,所以我們就要在hibernate.cfg.xml下配置如下信息。

 

[html] view plain copy
 print?
  1. <!DOCTYPE hibernate-configuration PUBLIC  
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  8.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/User</property>  
  9.         <property name="hibernate.connection.username">root</property>  
  10.         <property name="hibernate.connection.password">123</property>  
  11.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.   
  13.       
  14.       
  15.     </session-factory>  
  16. </hibernate-configuration>  


3.      建立實體類User.java

[java] view plain copy
 print?
  1. import java.util.Date;  
  2.   
  3. public class User {  
  4.   
  5.     private String id;  
  6.       
  7.     private String name;  
  8.       
  9.     private String password;  
  10.       
  11.   
  12.     public String getId() {  
  13.         return id;  
  14.     }  
  15.   
  16.     public void setId(String id) {  
  17.         this.id = id;  
  18.     }  
  19.   
  20.     public String getName() {  
  21.         return name;  
  22.     }  
  23.   
  24.     public void setName(String name) {  
  25.         this.name = name;  
  26.     }  
  27.   
  28.     public String getPassword() {  
  29.         return password;  
  30.     }  
  31.   
  32.     public void setPassword(String password) {  
  33.         this.password = password;  
  34.     }  
  35.   
  36. }  


 

4.      提供User.hbm.xml文件,完成實體類的映射(編寫對象關係映射文件,把對象關係映射的邏輯放在此處,這個文件包括表和字段的對象關係,當操作對象時,該文件通過java反射機制產生的方法,會把對象的方法轉爲關係的方法)

 

[html] view plain copy
 print?
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="com.cjq.hibernate.User">  
  7.         <id name="id">  
  8.             <generator class="uuid"/>  
  9.         </id>  
  10.         <property name="name"/>  
  11.         <property name="password"/>  
  12.     </class>  
  13. </hibernate-mapping>  

  這裏完成實體類映射的時候數據就要建立了,建立數據庫一定要和配置文件中的相符合。


5.      將User.hbm.xml文件加入到hibernate.cfg.xml文件中

[html] view plain copy
 print?
  1. <mapping resource="com/cjq/hibernate/User.hbm.xml"/>  

6.      編寫運行測試類

 

[java] view plain copy
 print?
  1. import org.hibernate.Session;  
  2. import org.hibernate.SessionFactory;  
  3. import org.hibernate.cfg.Configuration;  
  4.   
  5. public class HibernateTest {  
  6.   
  7.     public static void main(String[] args) {  
  8.           
  9.         //讀取hibernate.cfg.xml文件  
  10.         Configuration cfg = new Configuration().configure();  
  11.           
  12.         //建立SessionFactory  
  13.         SessionFactory factory = cfg.buildSessionFactory();  
  14.           
  15.         //取得session  
  16.         Session session = null;  
  17.         try {  
  18.             session = factory.openSession();  
  19.             //開啓事務  
  20.             session.beginTransaction();  
  21.             User user = new User();  
  22.             user.setName("張三");  
  23.             user.setPassword("123");  
  24.               
  25.             //保存User對象  
  26.             session.save(user);  
  27.             User u1=(User)session.load(User.classnew String("402881e4361533e901361533eb920001"));  
  28.             System.out.print("從數據庫加載數據的用戶名爲"+u1.getPassword());  
  29.             //提交事務  
  30.             session.getTransaction().commit();  
  31.         }catch(Exception e) {  
  32.             e.printStackTrace();  
  33.             //回滾事務  
  34.             session.getTransaction().rollback();  
  35.         }finally {  
  36.             if (session != null) {  
  37.                 if (session.isOpen()) {  
  38.                     //關閉session  
  39.                     session.close();  
  40.                 }  
  41.             }  
  42.         }  
  43.     }  
  44. }  

 

7.      建議

最好加入如下配置項,方便觀察hibernate sql的生成:

     

[html] view plain copy
 print?
  1. <propertynamepropertyname="hibernate.show_sql">true</property>  
  2. lt;propertyname="hibernate.format_sql">true</property>  

最好加入log4j配置文件,將該配置文件拷貝到src下,便於程序的調試。


8.      結果

 

通過一些概念和目錄還有實例實現,現在對hibernate有所瞭解,下面的博客要對JDBC和反射機制做一些簡單的介紹,這些知識是hibernate框架的基礎,所以有必要在深入學習hibernate框架之前介紹一下。敬請期待!!!

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