国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Hibernate入門02-Hibernate介紹及其環(huán)境搭建

2019-11-14 15:39:18
字體:
供稿:網(wǎng)友

 

系列目錄:(后續(xù)不斷更新...)

  1. Hibernate 入門 01 - 框架技術(shù) (介紹Hibernate框架的發(fā)展由來)
  2. Hibernate 入門 02 - Hibernate介紹及其環(huán)境搭建
  3. Hibernate 入門 03 - 使用Hibernate完成持久化操作
  4. Hibernate 入門 04 - Hibernate中java對象的三種狀態(tài)

 

 

 


▁▃▅ Hibernate介紹及其環(huán)境搭建 ▅▃▁


 

 

 

 

 

 

  昨晚喝多了,下午剛清醒,繼續(xù)搞Hibernate。走起、

 

  覺得還行的話,記得點贊哈,給我這個渣渣點學習的動力。有錯誤的話也請指出,省的我在錯誤上走了不歸路。呵呵。

 

本篇目錄:

  1. 數(shù)據(jù)持久化概念
  2. Hiberante框架及ORM
    2.1. Hibernate框架
    2.2. 什么是ORM
    2.3. Hibernate框架的優(yōu)缺點及其適用場合
      2.4.1 Hibernate框架的優(yōu)點
      2.4.2 Hibernate框架的缺點
    2.4. Hibernate環(huán)境搭建
    2.5. 技能訓練
    2.6. 練習

 

1.數(shù)據(jù)持久化概念

  數(shù)據(jù)持久化是將內(nèi)存中的數(shù)據(jù)模型轉(zhuǎn)換為存儲模型,以及將存儲模型轉(zhuǎn)換為內(nèi)存中的數(shù)據(jù)模型的同城。

  例如,文件的存儲、數(shù)據(jù)讀取等都是數(shù)據(jù)持久化操作。數(shù)據(jù)模型可以是任何數(shù)據(jù)結(jié)構(gòu)或?qū)ο竽P停鎯δP涂梢允顷P(guān)系模型、xml、二進制流等。

 

  從以上的概念描述,我們思考一下,之前是否接觸過數(shù)據(jù)持久化?是否做過數(shù)據(jù)持久化的操作?

  答案是肯定的。之前一開始,我們就編寫應(yīng)用程序操作數(shù)據(jù)表,對數(shù)據(jù)表進行增刪改查的操作,例JDBC/ADO.NET等,即數(shù)據(jù)持久化。

 

  而Hibernate和數(shù)據(jù)持久化有什么關(guān)系嘞?

 

 

 

2.Hibernate框架及ORM

  2.1 Hibernate框架

    Hibernate是數(shù)據(jù)持久化工具,是一個開放源代碼的對象關(guān)系映射框架。

    Hibernate內(nèi)部封裝了通過JDBC訪問數(shù)據(jù)庫的操作,向上層應(yīng)用提供面向?qū)ο蟮臄?shù)據(jù)訪問API。

 

    Gavin King是Hibernate的創(chuàng)始人,EJB3.0專家委員會成員,JBoss核心成員之一,也是《Hibernate in Action》一書的作者。

 

    2011年,Gavin King使用EJB的Entity bean 1.1時,覺得開發(fā)效率太低,試圖尋找更好的方案。

    經(jīng)過兩年多的努力,在2003年,Gavin King和他的開發(fā)團隊推出了Hibernate。

    Gavin King成為全世界JavaEE數(shù)據(jù)庫解決方案的領(lǐng)導者,Hibernate成為全世界最流行的開源對象關(guān)系映射框架。

 

  2.2 什么是ORM

    ORM(Object/Relational Mapping)即對象/關(guān)系映射,是一種數(shù)據(jù)持久化技術(shù)。

    它在對象模型和關(guān)系型數(shù)據(jù)庫之間建立起對應(yīng)關(guān)系,并且提供了一種機制,通過JavaBean對象去操作數(shù)據(jù)庫表中的數(shù)據(jù),如圖:

 

ORM映射關(guān)系

 

    在實際開發(fā)中,程序員使用面向?qū)ο蟮募夹g(shù)操作數(shù)據(jù),而當存儲數(shù)據(jù)時,使用的卻是關(guān)系型數(shù)據(jù)庫,這樣造成了很多不便。

    ORM在對象模型和關(guān)系數(shù)據(jù)庫的表之間建立了一座橋梁,有了ORM,程序員就不需要再使用SQL語句操作數(shù)據(jù)庫中的表,使用API直接操作JavaBean對象就可以實現(xiàn)數(shù)據(jù)的存儲、查詢、更改和刪除等操作。

    Hibernate就是采用ORM對象關(guān)系映射技術(shù)的持久化開發(fā)框架。

 

  2.3 Hibernate框架的優(yōu)缺點及其適用場合

    回顧一下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往往并不能直接使用,還需要轉(zhuǎn)換成List,并且通過JDBC查詢不能直接得到具體的業(yè)務(wù)對象。

    這樣在整個查詢的過程中,就需要做很多重復性的轉(zhuǎn)換工作。

 

    使用Hibernate完成持久化操作,只需要編寫如下代碼:

1         session session = HibernateUtil.getSession();2         Query query = session.createQuery("from User");3         List<User> users = (List<User>)query.list();

 

    HibernateUtil是一個自定義的工具類,用于獲取Session對象。

    Hibernate處理數(shù)據(jù)庫查詢時,編寫的代碼非常簡潔。Hibernate直接返回的是一個List集合類型的對象,可以直接使用。這樣就避免了繁瑣的重復性的數(shù)據(jù)轉(zhuǎn)換過程。

 

2.3.1 Hibernate框架的優(yōu)點

 ?。?)功能強大,是Java應(yīng)用與關(guān)系數(shù)據(jù)庫之間的橋梁,較之JDBC方式操作數(shù)據(jù)庫,代碼量大大減少,提高了持久化代碼的開發(fā)速度,降低了維護成本;

 ?。?)Hibernate支持許多面向?qū)ο蟮奶匦?,如組合、繼承、多態(tài)等,使得開發(fā)人員不必在面向業(yè)務(wù)領(lǐng)域的對象模型和面向數(shù)據(jù)庫的關(guān)系數(shù)據(jù)庫之間模型之間來回切換,方便開發(fā)人員進行領(lǐng)域驅(qū)動的面向?qū)ο蟮脑O(shè)計與開發(fā);

  (3)可移植性好。系統(tǒng)不會綁定在某個特定的關(guān)系型數(shù)據(jù)庫上,對于系統(tǒng)更換數(shù)據(jù)庫,通常只需要修改Hibernate配置文件即可正常運行;

  (4)Hibernate框架免費,可以在需要時研究源代碼,改寫源代碼,進行功能的定制,具有可擴展性。

  Hibernate適用于大中型項目。

2.3.1 Hibernate框架的缺點

  (1)不適合以數(shù)據(jù)為中心大量使用存儲過程的應(yīng)用;

  (2)大規(guī)模的批量插入、修改和刪除不適合用Hibernate。

  Hibernate不適用于小型項目,也不適用于關(guān)系模型設(shè)計不合理、不規(guī)范的系統(tǒng)。

 

 

2.4 Hibernate環(huán)境搭建

  在MyEclipse中新建工程后,使用Hibernate,需要做以下準備工作:

下載Jar包 -> 部署Jar包 -> 創(chuàng)建配置文件(hibernate.cfg.xml) -> 創(chuàng)建持久化類和映射文件

 

2.4.1 下載需要的jar包

  Hibernate的官方網(wǎng)站是http://www.hibernate.org,Hibernate的jar包都可以從官方網(wǎng)站上下載得到。

  為了方便新手下載,在此我整理了一下,附上下載地址: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”。解壓后目錄結(jié)構(gòu)如下:

  注意根目錄和lib/required目錄。

  根目錄包含文件夾和文件,在根目錄下存放著hibernate3.jar,Hibernate的接口和類就在這個Jar包中。

 

  Hibernate會使用到一些第三方類庫,這些類庫放在了lib/required目錄下:

 

Hibernate所需Jar包說明
名稱說明
antlr-2.7.6.jar語法分析器
commons-collections-3.1.jar各種集合和集合工具類的封裝
dom4j-1.6.1.jarXML的讀寫
javassist-3.12.0.GA.jar分析、編輯和創(chuàng)建Java字節(jié)碼的類庫
jta-1.1.jarJava事務(wù)API
slf4j-api-1.6.1.jar日志輸出

 

2.4.2 部署Jar包

  具體步驟如下:

    (1)將下載的后hibernate3.jar包和lib/required下的jar包及數(shù)據(jù)庫驅(qū)動jar包復制到建好的工程WEB-INF下的lib目錄中:

      

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

 

    在此,如果你需要進行一些其他的配置,而不僅僅是導入jar包,則可以打開詳細的對話框進行導入Jar包并設(shè)置:

    右鍵項目 - “Build Path” - “Configure Build Path”:

 

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

 

    為了方便學習Hibernate,可以在MyEclipse環(huán)境中設(shè)置當前工程中的hibernate3.jar的源碼。

    打開工程,展開“Referenced Libraries”,找到剛剛引入的“hibernate3.jar”,右鍵,選擇“Properties”“:

 

    打開屬性窗口之后,在左側(cè)選擇”Java Source Attachment”選項,右邊選擇“External location”,點擊“External Floder...”,選擇Hibernate中core的源碼目錄,編碼選擇項目編碼。

    例如我的: F:/下載目錄/hibernate-distribution-3.6.10.Final-dist/project/hibernate-core/src/main/java 

    然后點擊“OK”即設(shè)置完成。

 

2.4.3 創(chuàng)建Hibernate配置文件hibernate.cfg.xml

  Hibernate配置文件主要用于配置數(shù)據(jù)庫連接和Hibernate運行時所需要的各種特性。

  在工程的src目錄下添加Hibernate配置文件(可在hibernate-distribution-3.6.10.Final-dist.zip的project/etc目錄下找到示例文件)。

  默認文件名為“hibernate.cfg.xml”,該文件需要配置數(shù)據(jù)庫連接信息和Hibernate的參數(shù),如下代碼所示。

 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         <!-- 數(shù)據(jù)庫JDBC驅(qū)動 --> 8         <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 9         <!-- 數(shù)據(jù)庫URL -->10         <property name="connection.url">jdbc:sqlserver://182.92.215.126:1433;databaseName=HibernateStudy</property>11         <!-- 數(shù)據(jù)庫用戶 -->12         <property name="connection.username">sa</property>13         <!-- 數(shù)據(jù)庫密碼 -->14         <property name="connection.password">NbNjC586546mssql</property>15         16         <!-- 每個數(shù)據(jù)庫都有其對應(yīng)的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輸出到日志以供調(diào)試 -->23         <property name="show_sql">true</property>24         25         <!-- 是否格式化SQL -->26         <property name="format_sql">true</property>27         28         <!-- 默認情況下是auto的,就是說如果不設(shè)置的話它是會自動去你的classpath下面找一個bean-validation**包,但是找不到,所以會出現(xiàn)Bean Valition Factory錯誤。 -->29         <property name="javax.persistence.validation.mode">none</property>30     </session-factory>31 </hibernate-configuration>

其中幾個常用參數(shù)的作用如下:

(1)connection.url:表示數(shù)據(jù)庫URL。“jdbc:sqlserver://182.92.215.126:1433;databaseName=HibernateStudy是SQL Server數(shù)據(jù)庫的URL。

    其中,jdbc:sqlserver://是固定寫法,182.92.215.126是數(shù)據(jù)庫的IP地址,1433是SQL Server的端口號,HibernateStudy是連接的目標數(shù)據(jù)庫名稱。

(2)connection.driver_class:表示數(shù)據(jù)庫驅(qū)動。

    "com.microsoft.sqlserver.jdbc.SQLServerDriver"是SQL Server的驅(qū)動類。

(3)connection.username:表示數(shù)據(jù)庫用戶名。

(4)connection.password:表示數(shù)據(jù)庫用戶密碼。

(5)dialect:用于配置Hibernate使用的數(shù)據(jù)庫類型。Hibernate支持幾乎所有的主流數(shù)據(jù)庫,包括Oracle、DB2、MS SQL Server和MySQL等。
    "org.hibernate.dialect.SQLServerDialect"指定當前數(shù)據(jù)庫類型是SQL Server。

(6)current_session_context_class:指定currentSession()方法所得到的Session由誰來跟蹤管理。

    “thread”指Session由當前線程來跟蹤管理。

(7)show_sql:參數(shù)為true,則程序運行時在控制臺輸出SQL語句。

(8)format_sql:參數(shù)為true,則程序運行時在控制臺輸出格式化后的SQL語句。

(9)javax.persistence.validation.mode:默認情況下是auto的,就是說如果不設(shè)置的話它是會自動去你的classpath下面找一個bean-validation**包,但是找不到,所以會出現(xiàn)Bean Valition Factory錯誤。需要設(shè)置為none。

 

資料:

  因為Hibernate的配置參數(shù)很多,可以在Hibernate資源包“hibernate-distribution-3.6.10.Final-dist/hibernate-distribution-3.6.10.Final/documentation/manual/zh-CN/pdf/”目錄中,查看“hibernate_reference.pdf”的第3章,了解Hibernate的可選配置參數(shù)。

 

  準備了Hibernate的配置文件hibernate.cfg.xml,接下來就要準備持久化類和映射文件,以SQL Server中的部門表為例。

 

 

2.4.4 創(chuàng)建持久化類和映射文件

  持久化類是指其實例狀態(tài)需要被Hibernate持久化到數(shù)據(jù)庫中的類。在應(yīng)用的設(shè)計中,持久化類通常對應(yīng)需求中的業(yè)務(wù)實體。

  Hibernate對持久化類的要求很少,它鼓勵采用POJO編程模型來實現(xiàn)持久化類,與POJO類配合完成持久化工作是Hibernate最期望的工作模式。

  Hibernate要求持久化類必須具有一個無參數(shù)的構(gòu)造方法。

 

  POJO(Plain Ordinary Java Object),從字面上來講就是普通Java對象。

  POJO類可以簡單地理解為符合JavaBean規(guī)范的類,它不需要繼承和實現(xiàn)任何特殊的Java基類或者接口。

  JavaBean對象的狀態(tài)保存在屬性中,訪問屬性必須通過對應(yīng)的getXXX()和setXXX()方法。

 

  下面首先定義部門持久化類,添加一個無參數(shù)的構(gòu)造方法,實現(xiàn)java.io.Serializable接口。

  注意,這并不是Hibernate所要求的,如果持久化類有可能放入HttpSession中,就需要實現(xiàn)這個接口。在Web開發(fā)中,持久化類放入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     // Field11     private int deptNo;12     private String deptName;13     private String location;14     15     // Structure16     public Dept(){}17 18     // Getter and Setter19     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.java 部門持久化類

 

  Dept持久化類有一個deptNo屬性,用來唯一標識Dept類的每個對象。deptNo屬性又稱為id屬性。

  在Hibernate中,這個id屬性被稱為對象標識符(OID,Object Identifier)。一個Dept對象和數(shù)據(jù)庫中Dept表中的一條記錄對應(yīng)。

  創(chuàng)建持久化類后,還需要“告訴”Hibernate,持久化類Dept映射到數(shù)據(jù)庫的哪個表,以及哪個屬性對應(yīng)數(shù)據(jù)庫表的哪個字段,這些都要在映射文件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.hbm.xml是Dept類到數(shù)據(jù)庫表Dept的映射,其中各元素的含義如下:

    • class:定義一個持久化類的映射信息。常用屬性如下:
      • name表示持久化類的全限定名;
      • table表示持久化類對應(yīng)的數(shù)據(jù)庫表名
      • schema表示數(shù)據(jù)庫實例中的用戶
    • id:表示持久化類的OID和表的主鍵和映射。常用的屬性如下:
      • name:表示持久化類屬性的名稱,和屬性的訪問器相匹配。
      • type:表示持久化類屬性的類型。
      • column:表示持久化類屬性對應(yīng)的數(shù)據(jù)表字段的名稱,也可在子元素column中指定。
    • generator:id元素的子元素,用于指定主鍵的生成策略。常用屬性及子元素如下:
      • class:用來指定具體主鍵生成策略。
      • param:用來傳遞參數(shù)。上述代碼主鍵生成策略是assigned,不需要配置param元素。

 

  常用的主鍵生成策略如下:

  (1)increment:對類型long、short或int的主鍵,以自動增長的方式生成主鍵的值。主鍵按數(shù)值順序遞增,增量為1;

 ?。?)identity:對如SQL Server、DB2、MySQL等支持標識列的數(shù)據(jù)庫,可使用該主鍵生成策略生成自動增長主鍵,但要在數(shù)據(jù)中將該主鍵設(shè)置為標識列;

 ?。?)sequence:對如Oracle、DB2等支持序列的數(shù)據(jù)庫,可使用該主鍵生成策略生成自動增長主鍵,通過子元素param傳入數(shù)據(jù)庫中序列的名稱;

 ?。?)native:由Hibernate根據(jù)底層數(shù)據(jù)庫自行判斷采用何種生成策略,即由使用的數(shù)據(jù)庫生成主鍵的值;

 ?。?)assigned:主鍵由應(yīng)用程序負責生成,無需Hibernate參與。

 

    • property:定義持久化類中屬性和數(shù)據(jù)庫中表的字段的對應(yīng)關(guān)系。常用屬性如下:
      • name:表示持久化屬性的名稱,和屬性的訪問器相匹配;
      • type:表示持久化屬性的類型;
      • column:表示持久化類屬性對應(yīng)的數(shù)據(jù)庫表字段的名稱,也可在子元素column中指定。
    • column元素:用于指定其父元素代表的持久化類屬性所對應(yīng)的數(shù)據(jù)庫表中的字段。常用屬性如下:
      • name:表示字段的名稱;
      • length:表示字段長度;
      • not-null:設(shè)定是否可以為null,值為true表示不能為null。

 

  映射信息在映射文件中定義,還需要在配置文件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環(huán)境。接下來為租房系統(tǒng)搭建Hibernate環(huán)境。

 

 

 

2.5 技能訓練

租房系統(tǒng)介紹

  從本節(jié)起,使用Hibernate完成租房系統(tǒng)的各項功能。租房系統(tǒng)是一個B/S架構(gòu)的信息發(fā)布平臺。包括兩種角色:非注冊用戶和注冊用戶。

  主要功能如下:

 ?。?)發(fā)布房屋信息(注冊用戶)

  (2)瀏覽房屋信息(注冊用戶與非注冊用戶)

  (3)查看房屋詳細信息(注冊用戶與非注冊用戶)

  (4)查詢房屋信息(注冊用戶與非注冊用戶)

 ?。?)修改房屋信息(注冊用戶)

 ?。?)刪除房屋信息(注冊用戶)

  本系統(tǒng)使用SQL Server數(shù)據(jù)庫,請按以下描述創(chuàng)建數(shù)據(jù)表,如圖:

  上圖描述了租房系統(tǒng)中的五張表,以及它們之間的關(guān)系,下面通過表格對這五張表進行說明:

表名:Users(用戶表)
字段名字段說明數(shù)據(jù)類型說明
Id用戶編號int主鍵,標識列自動增長
Name用戶名nvarchar(50)不允許為空
Password密碼nvarchar(50)不允許為空
Telephone電話nvarchar(15)不允許為空
Username用戶名nvarchar(50)不允許為空
IsAdmin是否是管理員bit默認false

 

表名:Type(房屋類型表)
字段名字段說明數(shù)據(jù)類型說明
Id類型編號int主鍵,標識列自增
Name類型名稱nvarchar(50)不允許為空

 

表名:District(區(qū)縣表)
字段名字段說明數(shù)據(jù)類型說明
Id區(qū)縣編號int主鍵,標識列自增
Name區(qū)縣名稱nvarchar(50)不允許為空

 

表名:Street(街道表)
字段名字段說明數(shù)據(jù)類型說明
Id街道編號int主鍵,標識列自增
Name街道名稱nvarchar(50)不允許為空
DistrictId所屬區(qū)縣編號int外鍵,引用區(qū)縣表主鍵

 

表名:House(房屋信息表)
字段名字段說明數(shù)據(jù)類型說明
Id房屋信息編號int主鍵,標識列自增
Title標題nvarchar(50)不允許為空
Description描述nvarchar(2000)不允許為空
Price出租價格money不允許為空
PublishDate發(fā)布時間date默認當前日期
FloorAge面積int不允許為空
Contact聯(lián)系人nvarchar(100)不允許為空
UserId用戶編號int外鍵,引用用戶表主鍵
TypeId類型編號int外鍵,引用類型表主鍵
StreetId街道編號int外鍵,引用街道表主鍵

 

   為了方便大家學習,在此我將創(chuàng)建數(shù)據(jù)表以及插入測試數(shù)據(jù)的SQL寫好了,大家拿過去直接運行即可(沒錯 我就是雷鋒 雷鋒就是我):

 1 use HibernateStudy 2 go 3  4 -- 用戶表結(jié)構(gòu) 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 go17 18 -- 房屋類型表19 if exists(select * from sys.tables where name='Type') drop table Type20 go21 create table Type22 (23     Id int primary key identity(1,1) not null,    -- 類型編號24     Name nvarchar(50) not null                    -- 類型名稱25 )26 go27 28 -- 區(qū)縣信息表29 if exists(select * from sys.tables where name='District') drop table District30 go31 create table District32 (33     Id int primary key identity(1,1) not null,    -- 區(qū)縣編號34     Name nvarchar(50) not null                    -- 區(qū)縣名稱35 )36 go37 38 -- 區(qū)縣信息表39 if exists(select * from sys.tables where name='Street') drop table Street40 go41 create table Street42 (43     Id int primary key identity(1,1) not null,            -- 街道編號44     Name nvarchar(50) not null,                            -- 街道名稱45     DistrcitId int foreign key(Id) references District    -- 區(qū)縣編號,外鍵引用區(qū)縣表主鍵46 )47 go48 49 if exists(select * from sys.tables where name='Hourse') drop table Hourse50 go51 create table Hourse52 (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 Street63 )64 go65 66 67 -- 向房屋類型表插入數(shù)據(jù)68 insert into Type(Name) 69 select '單人間' union70 select '雙人間' union71 select '豪華套間'72 73 -- 向區(qū)縣表插入數(shù)據(jù)74 insert into District(Name)75 select '海淀區(qū)' union76 select '昌平區(qū)' union77 select '朝陽區(qū)' union78 select '大興區(qū)'79 80 -- 向街道表插入數(shù)據(jù)81 insert into Street(Name,DistrcitId)82 select '清河天蘭尾貨',1 union83 select '沙河鎮(zhèn)沙陽路',2 union84 select '北皋北京機場',3 union85 select '亦莊火車站',486 87 -- 向用戶信息表中插入數(shù)據(jù)88 insert into Users(Name,Password,Telephone,Username,IsAdmin)89 select '張董','zd123456','18600807420','ZhangDong',1 union90 select '兵哥','bg123456','13800138000','SunHongYu',0 union91 select '老劉','ll123456','13800138001','LiuQinYi',0 union92 select 'lisir','ls123456','13800138002','LiJunZhi',0 93 94 -- 向房屋信息表中插入數(shù)據(jù)95 insert into Hourse(Title,Description,Price,PublishDate,FloorAge,Contact,UserId,TypeId,StreetId)96 select '精裝單人間出租','電視有線網(wǎng)線等一應(yīng)俱全',500,convert(date,'2015-09-01'),20,'張先生',1,1,2 union97 select '豪華套間招租','豪華讓你沒的說 看了就愛上',1500,convert(date,'2015-09-02'),40,'孫老板',2,3,1 union98 select '雙人間火熱出租','別說兩個人 兩個半個人也夠住 哈哈',800,convert(date,'2015-09-03'),30,'李先生',3,2,3
創(chuàng)建表 插入測試數(shù)據(jù)的SQL

 

 

【練習 - 為租房系統(tǒng)搭建Hibernate環(huán)境】

需求說明

  為租房系統(tǒng)搭建Hibernate環(huán)境。

 ?。?)在MyEclipse中創(chuàng)建工程,導入Hibernate的jar包;

 ?。?)創(chuàng)建Hibernate配置文件hibernate.cfg.xml;

 ?。?)創(chuàng)建用戶表對應(yīng)的持久化類User和映射文件User.hbm.xml;

 ?。?)在hibernate.cfg.xml中聲明上面的映射文件。

 

在這里,我們只需要完成上述4個步驟,至于CDUR(增刪改查)的操作,下節(jié)咱們繼續(xù)。

大家照著上面的步驟,自己練習去吧。吼吼。

 

有問題留言,有錯誤也請大家指出。

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汶川县| 米泉市| 鸡东县| 安图县| 荥经县| 临高县| 沁水县| 宁蒗| 拉孜县| 洮南市| 池州市| 三明市| 上林县| 东至县| 白城市| 五常市| 宁河县| 阳城县| 乌拉特后旗| 苏州市| 天门市| 登封市| 宿迁市| 喜德县| 溧水县| 楚雄市| 武夷山市| 兴隆县| 巢湖市| 三台县| 华蓥市| 个旧市| 蒙阴县| 鄄城县| 寻甸| 永定县| 江达县| 惠安县| 通山县| 龙南县| 古交市|