Hibernate學習之——Hibernate環境搭建


  之前在寫關於安卓鬧鍾的教程,寫了一半就沒后一半了,其實自己也沒做好,在校外實習,校內畢業實習又有任務,只能先放放了,等畢業實習結束之后,在繼續安卓鬧鍾開發之旅,相信這個時間不會很久的。現在畢業實習用到的SSH框架(Struts+Spring+Hibernate),自己沒有多少時間去好好學習,但是還是想把學到的東西記錄下來。

 

一、Hibernate簡介

  1、什么是Hibernate?

          Hibernate是數據持久層的一個輕量級框架。數據持久層的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等。並且Hibernate是一個開源的orm(Object relations mapping)框架,提供了查詢獲取數據的方法,用面向對象的思想來操作數據庫,節省了我們開發處理數據的時間。

  2、Hibernate的優點

          1)、使用簡介的hql語句(Hibernate query language)。可以不使用傳統的insert,update等sql語句。比如insert一個對象,原來的做法是:insert into 表名稱 alue(值1,值2,值3,……),而現在的做法是:save(對象)。

          2)、使用or映射。對象到關系數據庫之間的映射。是從對象的角度操作數據庫,再次體現了面向對象思想。原來的實體抽取方法:首先有了表,然后表映射實體對象。而現在Hibernate做法是:直接由對象映射到表。

          3)、沒有侵入性,移植性比較好。什么是沒有侵入性?就是Hibernate采用了pojo對象。所謂的pojo對象就是沒有繼承Hibernate類或實現Hibernate接口。這樣的話,此類就是一個普通的java類,所以移植性比較好。  

          4)、支持透明持久化。透明是針對上層而言的。三層架構的理念是上層對下層的依賴,只是依賴接口不依賴具體實現。而Hibernate中的透明是指對業務邏輯層提供了一個接口session,而其他的都封裝隱藏。持久化是指把內存中的數據存放到磁盤上的文件中。

  3、當然一個事物,不可能十全十美,即使如此優秀的Hibernate也有自己的弱點。比如:若是大量數據批量操作。則不適合使用Hibernate。並且一個持久化對象不能映射到多張表中。

  4、Hibernate中5個核心接口

  1)、Configuration接口:負責配置及啟動Hibernate,用來創建sessionFactory

      2)、SessionFactory接口:一個SessionFactory對應一個數據源存儲,也就是一個數據庫對應一個SessionFactory。SessionFactory用來創建Session對象。並且SessionFactory是線程安全的,可以由多個線程訪問SessionFactory共享。

      3)、Session接口:這個接口是Hibernate中常用的接口,主要用於對數據的操作(增刪改查)。而這個Session對象不是線程安全的。不能共享。

      4)、Query接口:用於數據庫的查詢對象。

      5)、Transaction接口:Hibernate事務接口。它封裝了底層的事務操作,比如JTA(;java transcation architecture)所有的數據操作,比如增刪改查都寫在事務中。

 

二、Hibernate環境搭建所需軟件

1、JDK:http://pan.baidu.com/s/1pJodjUN

2、Tomcat:http://pan.baidu.com/s/1c0jFOWg

3、MySQL:http://pan.baidu.com/s/1ntohpLR

4、MySQL JDBC數據庫驅動:http://pan.baidu.com/s/1q56yy

4、Nvicat:http://pan.baidu.com/s/1c0vRhnU

5、MyEclipse破解版:http://pan.baidu.com/s/12aNAA

6、Hibernate 3.6.10:http://pan.baidu.com/s/1jG1e8OA

7、slf4j 1.6.1:http://pan.baidu.com/s/1c0eqni4

 

三、Hibernate環境搭建

1、安裝JDK7(最新版好像已經到8了吧,反正我也沒用過,不管它),配置好Java環境變量

2、安裝Tomcat,Tomcat現階段還用不到,不過以后肯定會用到,先裝上,一路點下去就行,沒什么要注意的

3、安裝MySQL,設置用戶名、密碼時候注意下就行。MySQL數據查看推薦使用Nvicat。

4、安裝MySQL JDBC驅動,驅動的jar包一般在C:\Program Files (x86)\MySQL\MySQL Connector J下

4、MyEclipse的安裝。

 

四、第一個Hibernate小程序

  創建一個Hello_World的Java項目,導入所需jar包(本機可以配置成User Librairies,方便使用),具體配置請見文章最后的源碼,此處不再綴訴。

  在src目錄下,創建一個hibernate.cfg.xml的配置文件,文件配置設置可以參見hibernate的官方文檔。

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         <!-- 數據庫連接設置 -->
11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
12         <!-- Student為你的數據庫名稱 -->
13         <property name="connection.url">jdbc:mysql://localhost:3306/Student</property>
14         <property name="connection.username">root</property>
15         <property name="connection.password">1025263614</property>
16 
17         <!-- JDBC connection pool (use the built-in) -->
18         <property name="connection.pool_size">1</property>
19 
20         <!-- SQL方言 -->
21         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
22 
23         <!-- Enable Hibernate's automatic session context management -->
24         <property name="current_session_context_class">thread</property>
25 
26         <!-- Disable the second-level cache -->
27         <property name="cache.provider_class">
28             org.hibernate.cache.NoCacheProvider
29         </property>
30 
31         <!-- 顯示SQL語句 -->
32         <property name="show_sql">true</property>
33         <!-- 格式化輸出SQL語句 -->
34         <property name="format_sql">true</property>
35 
36         <!-- validate 加載hibernate時,驗證創建數據庫表結構 -->
37         <!-- create 每次加載hibernate,重新創建數據庫表結構,這就是導致數據庫表數據丟失的原因。 -->
38         <!-- create-drop 加載hibernate時創建,退出是刪除表結構 -->
39         <!-- update 加載hibernate自動更新數據庫結構 -->
40         <property name="hbm2ddl.auto">create</property>
41         <property name="myeclipse.connection.profile"></property>
42 
43         <!-- hibernate與數據庫的對象關系映射文件**.hbm.xml -->
44         <mapping resource="com/lsj/hibernate/model/Student.hbm.xml" />
45         <!-- 使用annotion注解時,hibernate與數據庫對象關系映射表示 -->
46         <!-- 推薦使用annotion注解來表示映射關系 -->
47         <mapping class="com.lsj.hibernate.model.Teacher" />
48     </session-factory>
49 
50 </hibernate-configuration>

  創建一個Teacher的實體類,這里用的是annotion注解,還有一種方法是創建XXX.hbm.xml的關系映射文件,具體實現請參見附件的源碼

 1 package com.lsj.hibernate.model;
 2 
 3 import javax.persistence.Entity;
 4 import javax.persistence.Id;
 5 import javax.persistence.Table;
 6 
 7 //Entity是javax.persistence.Entity包中的
 8 @Entity
 9 // 映射的表名
10 @Table(name = "teacher")
11 public class Teacher {
12 
13     private int id;
14     private int age;
15     private String name;
16     private String title;
17 
18     // 主鍵,一般寫在get方法中,而不是在定義中
19     @Id
20     public int getId() {
21         return id;
22     }
23 
24     public void setId(int id) {
25         this.id = id;
26     }
27 
28     public int getAge() {
29         return age;
30     }
31 
32     public void setAge(int age) {
33         this.age = age;
34     }
35 
36     public String getName() {
37         return name;
38     }
39 
40     public void setName(String name) {
41         this.name = name;
42     }
43 
44     public String getTitle() {
45         return title;
46     }
47 
48     public void setTitle(String title) {
49         this.title = title;
50     }
51 }

  創建一個TeacherTest的測試類

 1 package com.lsj.hibernate.test;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6 
 7 import com.lsj.hibernate.model.Teacher;
 8 
 9 public class TeacherTest {
10 
11     public static void main(String[] args) {
12         Teacher t = new Teacher();
13         t.setAge(30);
14         t.setName("小傑");
15         t.setTitle("背包客");
16 
17         Configuration cfg = new Configuration();
18         // 讀取hibernate.cfg.xml中的配置
19         cfg.configure();
20         // 獲取SessionFactory
21         SessionFactory sf = cfg.buildSessionFactory();
22         // 獲取Session
23         Session session = sf.openSession();
24         // 開啟事務
25         session.beginTransaction();
26         // 保存
27         session.save(t);
28         // 提交事務
29         session.getTransaction().commit();
30         // 關閉連接
31         session.close();
32         sf.close();
33     }
34 }

  嗯,這樣一個簡單的Hibernate程序就寫完,運行的時候記得打開MySQL的服務,哈哈!

作者:登天路

轉載請說明出處:http://www.cnblogs.com/travellife/

源碼下載:百度雲盤

Hibernate 3.2參考文檔:百度雲盤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM