Hibernate 入門第四課 第一個小例子__Java

來源:互聯網
上載者:User

1.建立Hibernate的設定檔hibernate.cfg.xml

2.建立持久化類

3.建立對象-關係對應檔

4.通過Hibernate API編寫訪問資料庫的代碼 第一步建立設定檔:

首先我是使用hibernate tools工具輔助建立的,不知道怎麼安裝的請參考我之前的部落格:


選中檔案src右鍵 new->other


入門課程按照預設的一直next就行了

這樣會自動產生一個hibernate.cfg.xml檔案


開啟檔案

填寫配置:(設定檔代碼網上很多,建議去官網開發文檔中找。複製粘貼後,改一下資料庫驅動,帳號密碼等配置就行了)


<property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><property name="connection.username">root</property><property name="connection.password">123456</property><!-- JDBC connection pool (use the built-in) --><!-- <property name="connection.pool_size">1</property> --><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Enable Hibernate's automatic session context management --><!--<property name="current_session_context_class">thread</property> --><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">create</property>


上面的資料庫連接可以有多種寫法下面這兩種寫法也正確:後面的hibernate是建立的資料庫的名字

//略去連接埠號碼但是/不能略,所以是三個//。因為mysql的預設連接埠號碼是3306.都知道。除非你更改了連接埠號碼 才必須寫明連接埠號碼

<property name="connection.url">jdbc:mysql:///hibernate</property>

第三種寫法是:在後面加上字元編碼,更國際化防止中文亂碼

jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8

或者

jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8


注意:

這裡我用的是mysql資料庫,如果是其它資料庫,請自行百度或去官網尋找

1:在hibernate設定檔中方言配置“org.hibernate.dialect.MySQLDialect”中的MYSQL那個y要小寫。
2:Junit的版本要是4.5會報錯,換成4.7就好了
3:如果資料庫是本地,hibernate設定檔中的地址這樣配置:jdbc:mysql://localhost/hibernate或如上面提到的三種方式中的一種

第二步建立持久化類

持久化類要遵循JavaBean的規範:

⑴ JavaBean 必須放在一個單獨的包中

⑵ JavaBean 必須申明為 public class 即:必須是公有的類

⑶ JavaBean 的所有屬性必須申明為 private 即:屬性必須私人

⑷ 通過 setter 方法和 getter 方法設值和取值    

⑸ 必須有一個公有無參構造方法

⑹ 編寫代碼要嚴格遵守 Java 程式的命名規範

例如我建立了一個學生類的持久化類:

package hibernate_001;import java.util.Date;public class Student {private int id;// 學號private String name;// 姓名private Date birthday;// 出生日期private String address;// 家庭住址public Student() {}public Student(int id, String name, Date birthday, String address) {// super();this.id = id;this.name = name;this.birthday = birthday;this.address = address;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", birthday=" + birthday + ", address=" + address + "]";}}
第三步:建立關係對應檔和資料庫:

建立關係對應檔:(建立方法同第一步)如下 new-other-Hibernate-Hibernate XML Mapping file(hbm.xml) 然後一直next就行了




點next


之後操作如下:選擇對應的持久化類然後next


注意這裡點擊next之後如果出現如下提示:(沒有這項錯誤的請跳過)

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

請做如下操作:

這種錯誤一般有3個原因

1.jdbc驅動包版本問題或錯誤

2.資料庫配置不正確或服務未啟動

3.hibernate 配置問題


不過一般查錯 按照 3 2 1的順序來

我的問題是資料庫未啟動:(資料庫預設是開機自啟動的,我之前把自啟動關閉了,所以需要手動啟動一下)


開啟:工作管理員->服務


右鍵選擇啟動就行了

但是啟動了還是不行,我接著接著hibernate配置問題。

弄啦半天還是不行。推測是版本不匹配的問題:我降低了eclipse的版本

換成了:Version: Luna Service Release 2 (4.4.2)之前是最高的4.6的oxygen那個

注意eclipse降低版本後,hibernate tools 也要降低到與eclipse對應的版本

即:重新安裝配置hibernate tools工具:之前已經講過了,忘記的請回到hibernate 入門教程第二課第三課

同時我又降低了匯入的hibernate jar包的版本現在使用的是4.2.4


現在問題解決了(看來以後用軟體還是不要用最新的,各種問題版本不匹配。開發專案提案用稍微老一點的穩點版本)


下面接著講:如下圖是工具自動幫我們產生的對象關係映射的文檔,如果沒有這個工具,我們只能自己寫,而且一不小心寫錯個字母也不好檢查。是不是很方便。

映射文檔把我們的實體類Student映射為資料庫中的一張表,屬性對應為表中的欄位


注意:下面紅框裡面的類是我們剛才建立的實體類,預設產生的不會有錯,因為我們建立的實體類在預設的包中。如果後來想把實體類的路徑該了,比如後來放到了com.edu.model包中:紅框中就該改寫為com.edu.model.Student。如果不改的話會找不到實體類



映射文檔產生後需要加到配置文檔hibernate.cfg.xml中 如下圖所示



注意:這裡因為Student.hbm.xml的路徑因為在預設的包中所以全路徑就是Student.hbm.xml,

如果持久化類在其它自訂的包中寫全路徑名就應該這樣寫:

例如Student.hbm.xml在com.edu.model包中需要這樣寫

<mapping resource="com/edu/model/Student.hbm.xml" />



建立資料庫:注意編碼規則,選擇utf-8避免出現中文亂碼問題




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.