引導目錄:
昨晚喝多了,下午剛清醒,繼續搞Hibernate。走起、
覺得還行的話,記得點贊哈,給我這個渣渣點學習的動力。有錯誤的話也請指出,省的我在錯誤上走了不歸路。呵呵。
本篇目錄:
- 數據持久化概念
- Hiberante框架及ORM
2.1. Hibernate框架
2.2. 什么是ORM
2.3. Hibernate框架的優缺點及其適用場合
2.4.1 Hibernate框架的優點
2.4.2 Hibernate框架的缺點
2.4. Hibernate環境搭建
2.5. 技能訓練
2.6. 練習
1.數據持久化概念
數據持久化是將內存中的數據模型轉換為存儲模型,以及將存儲模型轉換為內存中的數據模型的同城。
例如,文件的存儲、數據讀取等都是數據持久化操作。數據模型可以是任何數據結構或對象模型,存儲模型可以是關系模型、XML、二進制流等。
從以上的概念描述,我們思考一下,之前是否接觸過數據持久化?是否做過數據持久化的操作?
答案是肯定的。之前一開始,我們就編寫應用程序操作數據表,對數據表進行增刪改查的操作,例JDBC/ADO.NET等,即數據持久化。
而Hibernate和數據持久化有什么關系嘞?
2.Hibernate框架及ORM
2.1 Hibernate框架
Hibernate是數據持久化工具,是一個開放源代碼的對象關系映射框架。
Hibernate內部封裝了通過JDBC訪問數據庫的操作,向上層應用提供面向對象的數據訪問API。
Gavin King是Hibernate的創始人,EJB3.0專家委員會成員,JBoss核心成員之一,也是《Hibernate in Action》一書的作者。
2011年,Gavin King使用EJB的Entity bean 1.1時,覺得開發效率太低,試圖尋找更好的方案。
經過兩年多的努力,在2003年,Gavin King和他的開發團隊推出了Hibernate。
Gavin King成為全世界JavaEE數據庫解決方案的領導者,Hibernate成為全世界最流行的開源對象關系映射框架。
2.2 什么是ORM
ORM(Object/Relational Mapping)即對象/關系映射,是一種數據持久化技術。
它在對象模型和關系型數據庫之間建立起對應關系,並且提供了一種機制,通過JavaBean對象去操作數據庫表中的數據,如圖:

ORM映射關系
在實際開發中,程序員使用面向對象的技術操作數據,而當存儲數據時,使用的卻是關系型數據庫,這樣造成了很多不便。
ORM在對象模型和關系數據庫的表之間建立了一座橋梁,有了ORM,程序員就不需要再使用SQL語句操作數據庫中的表,使用API直接操作JavaBean對象就可以實現數據的存儲、查詢、更改和刪除等操作。
Hibernate就是采用ORM對象關系映射技術的持久化開發框架。
2.3 Hibernate框架的優缺點及其適用場合
回顧一下DAO層代碼,以查找所有用戶為例,直接使用JDBC查詢用戶的代碼如下:
1 List users = new ArrayList(); 2 User user; 3 Connection conn = null; 4 Statement stmt = null; 5 ResultSet rs = null; 6 try{ 7 conn = DBUtil.getConnection(); 8 stmt = conn.createStatement(); 9 rs = stmt.executeQuery("select * rom users"); 10 while(rs.next()){ 11 user = new User(); 12 user.setId(rs.getInt("Id")); 13 user.setUsername(rs.getString("Username")); 14 user.setPassword(rs.getString("Password")); 15 user.setTelephone(rs.getString("Telephone")); 16 user.setRegisterDate(rs.getDate("RegisterDate")); 17 user.setSex(rs.getInt("Sex")); 18 users.add(user); 19 } 20 }catch(Exception e){ 21 e.printStackTrace(); 22 }finally{ 23 DBUtil.close(rs,stmt,conn); 24 }
用JDBC查詢返回的是ResultSet對象,ResultSet往往並不能直接使用,還需要轉換成List,並且通過JDBC查詢不能直接得到具體的業務對象。
這樣在整個查詢的過程中,就需要做很多重復性的轉換工作。
使用Hibernate完成持久化操作,只需要編寫如下代碼:
1 Session session = HibernateUtil.getSession(); 2 Query query = session.createQuery("from User"); 3 List<User> users = (List<User>)query.list();
HibernateUtil是一個自定義的工具類,用於獲取Session對象。
Hibernate處理數據庫查詢時,編寫的代碼非常簡潔。Hibernate直接返回的是一個List集合類型的對象,可以直接使用。這樣就避免了繁瑣的重復性的數據轉換過程。
2.3.1 Hibernate框架的優點
(1)功能強大,是Java應用與關系數據庫之間的橋梁,較之JDBC方式操作數據庫,代碼量大大減少,提高了持久化代碼的開發速度,降低了維護成本;
(2)Hibernate支持許多面向對象的特性,如組合、繼承、多態等,使得開發人員不必在面向業務領域的對象模型和面向數據庫的關系數據庫之間模型之間來回切換,方便開發人員進行領域驅動的面向對象的設計與開發;
(3)可移植性好。系統不會綁定在某個特定的關系型數據庫上,對於系統更換數據庫,通常只需要修改Hibernate配置文件即可正常運行;
(4)Hibernate框架免費,可以在需要時研究源代碼,改寫源代碼,進行功能的定制,具有可擴展性。
Hibernate適用於大中型項目。
2.3.1 Hibernate框架的缺點
(1)不適合以數據為中心大量使用存儲過程的應用;
(2)大規模的批量插入、修改和刪除不適合用Hibernate。
Hibernate不適用於小型項目,也不適用於關系模型設計不合理、不規范的系統。
2.4 Hibernate環境搭建
在MyEclipse中新建工程后,使用Hibernate,需要做以下准備工作:
| 下載Jar包 -> 部署Jar包 -> 創建配置文件(hibernate.cfg.xml) -> 創建持久化類和映射文件 |
2.4.1 下載需要的jar包
Hibernate的官方網站是http://www.hibernate.org,Hibernate的jar包都可以從官方網站上下載得到。
為了方便新手下載,在此我整理了一下,附上下載地址:http://www.geeksss.com/thread-169-1-1.html。
目前最新版本是5.0.1.FINAL,推薦新手學習使用“hibernate-distribution-x.x.x.GA-dist.zip”。
在這里我用的是“hibernate-distribution-3.6.10.Final-dist”。解壓后目錄結構如下:

注意根目錄和lib\required目錄。
根目錄包含文件夾和文件,在根目錄下存放着hibernate3.jar,Hibernate的接口和類就在這個Jar包中。
Hibernate會使用到一些第三方類庫,這些類庫放在了lib\required目錄下:

| 名稱 | 說明 |
| antlr-2.7.6.jar | 語法分析器 |
| commons-collections-3.1.jar | 各種集合和集合工具類的封裝 |
| dom4j-1.6.1.jar | XML的讀寫 |
| javassist-3.12.0.GA.jar | 分析、編輯和創建Java字節碼的類庫 |
| jta-1.1.jar | Java事務API |
| slf4j-api-1.6.1.jar | 日志輸出 |
2.4.2 部署Jar包
具體步驟如下:
(1)將下載的后hibernate3.jar包和lib\required下的jar包及數據庫驅動jar包復制到建好的工程WEB-INF下的lib目錄中:

(2)通過MyEclipse導入上述的包。在MyEclipse中,選中復制到lib里面的jar包,右鍵 - “Build Path” - “Add to Build Path”,即可快速添加引用:

在此,如果你需要進行一些其他的配置,而不僅僅是導入jar包,則可以打開詳細的對話框進行導入Jar包並設置:
右鍵項目 - “Build Path” - “Configure Build Path”:

在彈出的窗體中選擇“Libraries”選項卡,單擊“Add JARs”按鈕,如下圖,在彈出的“JAR Selection”窗體中選擇lib下剛剛復制的jar包,單擊OK即可導入:

為了方便學習Hibernate,可以在MyEclipse環境中設置當前工程中的hibernate3.jar的源碼。
打開工程,展開“Referenced Libraries”,找到剛剛引入的“hibernate3.jar”,右鍵,選擇“Properties”“:

打開屬性窗口之后,在左側選擇”Java Source Attachment”選項,右邊選擇“External location”,點擊“External Floder...”,選擇Hibernate中core的源碼目錄,編碼選擇項目編碼。
例如我的: F:/下載目錄/hibernate-distribution-3.6.10.Final-dist/project/hibernate-core/src/main/java

然后點擊“OK”即設置完成。
2.4.3 創建Hibernate配置文件hibernate.cfg.xml
Hibernate配置文件主要用於配置數據庫連接和Hibernate運行時所需要的各種特性。
在工程的src目錄下添加Hibernate配置文件(可在hibernate-distribution-3.6.10.Final-dist.zip的project\etc目錄下找到示例文件)。
默認文件名為“hibernate.cfg.xml”,該文件需要配置數據庫連接信息和Hibernate的參數,如下代碼所示。
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> 7 <!-- 數據庫JDBC驅動 --> 8 <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 9 <!-- 數據庫URL --> 10 <property name="connection.url">jdbc:sqlserver://182.92.215.126:1433;databaseName=HibernateStudy</property> 11 <!-- 數據庫用戶 --> 12 <property name="connection.username">sa</property> 13 <!-- 數據庫密碼 --> 14 <property name="connection.password">NbNjC586546mssql</property> 15 16 <!-- 每個數據庫都有其對應的Dialect以匹配平台特性 --> 17 <property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property> 18 19 <!-- 指定當前session范圍和上下文 --> 20 <property name="current_session_context_class">thread</property> 21 22 <!-- 是否將運行時生成的SQL輸出到日志以供調試 --> 23 <property name="show_sql">true</property> 24 25 <!-- 是否格式化SQL --> 26 <property name="format_sql">true</property> 27 28 <!-- 默認情況下是auto的,就是說如果不設置的話它是會自動去你的classpath下面找一個bean-validation**包,但是找不到,所以會出現Bean Valition Factory錯誤。 --> 29 <property name="javax.persistence.validation.mode">none</property> 30 </session-factory> 31 </hibernate-configuration>
其中幾個常用參數的作用如下:
(1)connection.url:表示數據庫URL。“jdbc:sqlserver://182.92.215.126:1433;databaseName=HibernateStudy”是SQL Server數據庫的URL。
其中,jdbc:sqlserver://是固定寫法,182.92.215.126是數據庫的IP地址,1433是SQL Server的端口號,HibernateStudy是連接的目標數據庫名稱。
(2)connection.driver_class:表示數據庫驅動。
"com.microsoft.sqlserver.jdbc.SQLServerDriver"是SQL Server的驅動類。
(3)connection.username:表示數據庫用戶名。
(4)connection.password:表示數據庫用戶密碼。
(5)dialect:用於配置Hibernate使用的數據庫類型。Hibernate支持幾乎所有的主流數據庫,包括Oracle、DB2、MS SQL Server和MySQL等。
"org.hibernate.dialect.SQLServerDialect"指定當前數據庫類型是SQL Server。
(6)current_session_context_class:指定currentSession()方法所得到的Session由誰來跟蹤管理。
“thread”指Session由當前線程來跟蹤管理。
(7)show_sql:參數為true,則程序運行時在控制台輸出SQL語句。
(8)format_sql:參數為true,則程序運行時在控制台輸出格式化后的SQL語句。
(9)javax.persistence.validation.mode:默認情況下是auto的,就是說如果不設置的話它是會自動去你的classpath下面找一個bean-validation**包,但是找不到,所以會出現Bean Valition Factory錯誤。需要設置為none。
資料:
因為Hibernate的配置參數很多,可以在Hibernate資源包“hibernate-distribution-3.6.10.Final-dist\hibernate-distribution-3.6.10.Final\documentation\manual\zh-CN\pdf\”目錄中,查看“hibernate_reference.pdf”的第3章,了解Hibernate的可選配置參數。
准備了Hibernate的配置文件hibernate.cfg.xml,接下來就要准備持久化類和映射文件,以SQL Server中的部門表為例。
2.4.4 創建持久化類和映射文件
持久化類是指其實例狀態需要被Hibernate持久化到數據庫中的類。在應用的設計中,持久化類通常對應需求中的業務實體。
Hibernate對持久化類的要求很少,它鼓勵采用POJO編程模型來實現持久化類,與POJO類配合完成持久化工作是Hibernate最期望的工作模式。
Hibernate要求持久化類必須具有一個無參數的構造方法。
POJO(Plain Ordinary Java Object),從字面上來講就是普通Java對象。
POJO類可以簡單地理解為符合JavaBean規范的類,它不需要繼承和實現任何特殊的Java基類或者接口。
JavaBean對象的狀態保存在屬性中,訪問屬性必須通過對應的getXXX()和setXXX()方法。
下面首先定義部門持久化類,添加一個無參數的構造方法,實現java.io.Serializable接口。
注意,這並不是Hibernate所要求的,如果持久化類有可能放入HttpSession中,就需要實現這個接口。在Web開發中,持久化類放入HttpSession是很常見的。
部門持久化類Dept.java代碼如下:
1 package com.geeksss.HibernateStudy.entity; 2 3 import java.io.Serializable; 4 5 /** 6 * 部門實體類 7 * @author 張董 8 */ 9 public class Dept implements Serializable{ 10 // Field 11 private int deptNo; 12 private String deptName; 13 private String location; 14 15 // Structure 16 public Dept(){} 17 18 // Getter and Setter 19 public int getDeptNo() { 20 return deptNo; 21 } 22 23 public void setDeptNo(int deptNo) { 24 this.deptNo = deptNo; 25 } 26 27 public String getDeptName() { 28 return deptName; 29 } 30 31 public void setDeptName(String deptName) { 32 this.deptName = deptName; 33 } 34 35 public String getLocation() { 36 return location; 37 } 38 39 public void setLocation(String location) { 40 this.location = location; 41 } 42 }
Dept持久化類有一個deptNo屬性,用來唯一標識Dept類的每個對象。deptNo屬性又稱為id屬性。
在Hibernate中,這個id屬性被稱為對象標識符(OID,Object Identifier)。一個Dept對象和數據庫中Dept表中的一條記錄對應。
創建持久化類后,還需要“告訴”Hibernate,持久化類Dept映射到數據庫的哪個表,以及哪個屬性對應數據庫表的哪個字段,這些都要在映射文件Dept.hbm.xml中配置。
詳細的映射文件代碼如下(注意:在Hibernate中,映射文件通常以“.hbm.xml”作為后綴。):
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 6 <hibernate-mapping> 7 <class name="com.geeksss.HibernateStudy.entity.Dept" table="Dept"> 8 <id name="deptNo" type="java.lang.Integer" column="DeptNo"> 9 <generator class="assigned"></generator> 10 </id> 11 <property name="deptName" type="java.lang.String" column="DeptName"></property> 12 <property name="location" type="java.lang.String"> 13 <column name="Location"></column> 14 </property> 15 </class> 16 </hibernate-mapping>
上述示例代碼Dept.hbm.xml是Dept類到數據庫表Dept的映射,其中各元素的含義如下:
-
- class:定義一個持久化類的映射信息。常用屬性如下:
- name表示持久化類的全限定名;
- table表示持久化類對應的數據庫表名
- schema表示數據庫實例中的用戶
- id:表示持久化類的OID和表的主鍵和映射。常用的屬性如下:
- name:表示持久化類屬性的名稱,和屬性的訪問器相匹配。
- type:表示持久化類屬性的類型。
- column:表示持久化類屬性對應的數據表字段的名稱,也可在子元素column中指定。
- generator:id元素的子元素,用於指定主鍵的生成策略。常用屬性及子元素如下:
- class:用來指定具體主鍵生成策略。
- param:用來傳遞參數。上述代碼主鍵生成策略是assigned,不需要配置param元素。
- class:定義一個持久化類的映射信息。常用屬性如下:
常用的主鍵生成策略如下:
(1)increment:對類型long、short或int的主鍵,以自動增長的方式生成主鍵的值。主鍵按數值順序遞增,增量為1;
(2)identity:對如SQL Server、DB2、MySQL等支持標識列的數據庫,可使用該主鍵生成策略生成自動增長主鍵,但要在數據中將該主鍵設置為標識列;
(3)sequence:對如Oracle、DB2等支持序列的數據庫,可使用該主鍵生成策略生成自動增長主鍵,通過子元素param傳入數據庫中序列的名稱;
(4)native:由Hibernate根據底層數據庫自行判斷采用何種生成策略,即由使用的數據庫生成主鍵的值;
(5)assigned:主鍵由應用程序負責生成,無需Hibernate參與。
-
- property:定義持久化類中屬性和數據庫中表的字段的對應關系。常用屬性如下:
- name:表示持久化屬性的名稱,和屬性的訪問器相匹配;
- type:表示持久化屬性的類型;
- column:表示持久化類屬性對應的數據庫表字段的名稱,也可在子元素column中指定。
- column元素:用於指定其父元素代表的持久化類屬性所對應的數據庫表中的字段。常用屬性如下:
- name:表示字段的名稱;
- length:表示字段長度;
- not-null:設定是否可以為null,值為true表示不能為null。
- property:定義持久化類中屬性和數據庫中表的字段的對應關系。常用屬性如下:
映射信息在映射文件中定義,還需要在配置文件hibernate.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> 7 <!-- 在此省略之前的其他配置 --> 8 9 <!-- 映射文件配置,注意配置文件名必須包含其相對於classpath的全路徑 --> 10 <mapping resource="com/geeksss/HibernateStudy/mapping/Dept.hbm.xml"/> 11 </session-factory> 12 </hibernate-configuration>
通過前面的學習,了解了Hibernate框架,並學習如何搭建Hibernate環境。接下來為租房系統搭建Hibernate環境。
2.5 技能訓練
租房系統介紹
從本節起,使用Hibernate完成租房系統的各項功能。租房系統是一個B/S架構的信息發布平台。包括兩種角色:非注冊用戶和注冊用戶。
主要功能如下:
(1)發布房屋信息(注冊用戶)
(2)瀏覽房屋信息(注冊用戶與非注冊用戶)
(3)查看房屋詳細信息(注冊用戶與非注冊用戶)
(4)查詢房屋信息(注冊用戶與非注冊用戶)
(5)修改房屋信息(注冊用戶)
(6)刪除房屋信息(注冊用戶)
本系統使用SQL Server數據庫,請按以下描述創建數據表,如圖:

上圖描述了租房系統中的五張表,以及它們之間的關系,下面通過表格對這五張表進行說明:
| 表名:Users(用戶表) | |||
| 字段名 | 字段說明 | 數據類型 | 說明 |
| Id | 用戶編號 | int | 主鍵,標識列自動增長 |
| Name | 用戶名 | nvarchar(50) | 不允許為空 |
| Password | 密碼 | nvarchar(50) | 不允許為空 |
| Telephone | 電話 | nvarchar(15) | 不允許為空 |
| Username | 用戶名 | nvarchar(50) | 不允許為空 |
| IsAdmin | 是否是管理員 | bit | 默認false |
| 表名:Type(房屋類型表) | |||
| 字段名 | 字段說明 | 數據類型 | 說明 |
| Id | 類型編號 | int | 主鍵,標識列自增 |
| Name | 類型名稱 | nvarchar(50) | 不允許為空 |
| 表名:District(區縣表) | |||
| 字段名 | 字段說明 | 數據類型 | 說明 |
| Id | 區縣編號 | int | 主鍵,標識列自增 |
| Name | 區縣名稱 | nvarchar(50) | 不允許為空 |
| 表名:Street(街道表) | |||
| 字段名 | 字段說明 | 數據類型 | 說明 |
| Id | 街道編號 | int | 主鍵,標識列自增 |
| Name | 街道名稱 | nvarchar(50) | 不允許為空 |
| DistrictId | 所屬區縣編號 | int | 外鍵,引用區縣表主鍵 |
| 表名:House(房屋信息表) | |||
| 字段名 | 字段說明 | 數據類型 | 說明 |
| Id | 房屋信息編號 | int | 主鍵,標識列自增 |
| Title | 標題 | nvarchar(50) | 不允許為空 |
| Description | 描述 | nvarchar(2000) | 不允許為空 |
| Price | 出租價格 | money | 不允許為空 |
| PublishDate | 發布時間 | date | 默認當前日期 |
| FloorAge | 面積 | int | 不允許為空 |
| Contact | 聯系人 | nvarchar(100) | 不允許為空 |
| UserId | 用戶編號 | int | 外鍵,引用用戶表主鍵 |
| TypeId | 類型編號 | int | 外鍵,引用類型表主鍵 |
| StreetId | 街道編號 | int | 外鍵,引用街道表主鍵 |
為了方便大家學習,在此我將創建數據表以及插入測試數據的SQL寫好了,大家拿過去直接運行即可(沒錯 我就是雷鋒 雷鋒就是我):
1 use HibernateStudy 2 go 3 4 -- 用戶表結構 5 if exists(select * from sys.tables where name='Users') drop table Users 6 go 7 create table Users 8 ( 9 Id int primary key identity(1,1) not null, -- 用戶編號 10 Name nvarchar(50) not null, -- 用戶名 11 Password nvarchar(50) not null, -- 密碼 12 Telephone nvarchar(15) not null, -- 電話 13 Username nvarchar(50) not null, -- 姓名 14 IsAdmin bit default(0) null -- 是否是管理員 15 ) 16 go 17 18 -- 房屋類型表 19 if exists(select * from sys.tables where name='Type') drop table Type 20 go 21 create table Type 22 ( 23 Id int primary key identity(1,1) not null, -- 類型編號 24 Name nvarchar(50) not null -- 類型名稱 25 ) 26 go 27 28 -- 區縣信息表 29 if exists(select * from sys.tables where name='District') drop table District 30 go 31 create table District 32 ( 33 Id int primary key identity(1,1) not null, -- 區縣編號 34 Name nvarchar(50) not null -- 區縣名稱 35 ) 36 go 37 38 -- 區縣信息表 39 if exists(select * from sys.tables where name='Street') drop table Street 40 go 41 create table Street 42 ( 43 Id int primary key identity(1,1) not null, -- 街道編號 44 Name nvarchar(50) not null, -- 街道名稱 45 DistrcitId int foreign key(Id) references District -- 區縣編號,外鍵引用區縣表主鍵 46 ) 47 go 48 49 if exists(select * from sys.tables where name='Hourse') drop table Hourse 50 go 51 create table Hourse 52 ( 53 Id int primary key identity(1,1) not null, -- 房屋信息編號 54 Title nvarchar(50) not null, 55 Description nvarchar(2000) not null, 56 Price money not null, 57 PublishDate date default(getdate()) null, 58 FloorAge int not null, 59 Contact nvarchar(100) not null, 60 UserId int foreign key(Id) references Users, 61 TypeId int foreign key(Id) references Type, 62 StreetId int foreign key(Id) references Street 63 ) 64 go 65 66 67 -- 向房屋類型表插入數據 68 insert into Type(Name) 69 select '單人間' union 70 select '雙人間' union 71 select '豪華套間' 72 73 -- 向區縣表插入數據 74 insert into District(Name) 75 select '海淀區' union 76 select '昌平區' union 77 select '朝陽區' union 78 select '大興區' 79 80 -- 向街道表插入數據 81 insert into Street(Name,DistrcitId) 82 select '清河天蘭尾貨',1 union 83 select '沙河鎮沙陽路',2 union 84 select '北皋北京機場',3 union 85 select '亦庄火車站',4 86 87 -- 向用戶信息表中插入數據 88 insert into Users(Name,Password,Telephone,Username,IsAdmin) 89 select '張董','zd123456','18600807420','ZhangDong',1 union 90 select '兵哥','bg123456','13800138000','SunHongYu',0 union 91 select '老劉','ll123456','13800138001','LiuQinYi',0 union 92 select 'lisir','ls123456','13800138002','LiJunZhi',0 93 94 -- 向房屋信息表中插入數據 95 insert into Hourse(Title,Description,Price,PublishDate,FloorAge,Contact,UserId,TypeId,StreetId) 96 select '精裝單人間出租','電視有線網線等一應俱全',500,convert(date,'2015-09-01'),20,'張先生',1,1,2 union 97 select '豪華套間招租','豪華讓你沒的說 看了就愛上',1500,convert(date,'2015-09-02'),40,'孫老板',2,3,1 union 98 select '雙人間火熱出租','別說兩個人 兩個半個人也夠住 哈哈',800,convert(date,'2015-09-03'),30,'李先生',3,2,3
【練習 - 為租房系統搭建Hibernate環境】
需求說明
為租房系統搭建Hibernate環境。
(1)在MyEclipse中創建工程,導入Hibernate的jar包;
(2)創建Hibernate配置文件hibernate.cfg.xml;
(3)創建用戶表對應的持久化類User和映射文件User.hbm.xml;
(4)在hibernate.cfg.xml中聲明上面的映射文件。
在這里,我們只需要完成上述4個步驟,至於CDUR(增刪改查)的操作,下節咱們繼續。
大家照着上面的步驟,自己練習去吧。吼吼。
有問題留言,有錯誤也請大家指出。
