Hibernate框架介紹01
阿新 • • 發佈:2018-12-04
-
Hibernate框架是什麼
Hibernate的好處?
操作資料庫的時候,可以以面向物件的方式來完成,不需要書寫sql語句。
Hibernate是一款ORM框架
-
Hibernate框架的搭建步驟:
- 導包
- 建立資料庫,準備表,實體
- 書寫ORM元資料(物件與表的對映配置檔案)
- 書寫主配置檔案
- 書寫程式碼測試
Hibernate API 詳解:
書寫ORM元資料(物件與表的對映配置檔案)Customer.hbm.xml,如下圖:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 配置表與實體物件的關係 --> <hibernate-mapping package="com.cn.domain"> <!-- class元素:配置實體與表的對應關係的 name:完整類名 table:資料庫表名 --> <class name= "Customer" table = "cst_customer"> <id name= "cust_id"> <!-- 主鍵生成策略 --> <generator class="native"></generator> </id> <!-- property元素:除id之外的普通屬性對映 name: 填寫屬性名 column(可選): 填寫列名 type(可選):填寫列(屬性)的型別.hibernate會自動檢測實體的屬性型別. 每個型別有三種填法: java型別|hibernate型別|資料庫型別 not-null(可選):配置該屬性(列)是否不能為空. 預設值:false length(可選):配置資料庫中列的長度. 預設值:使用資料庫型別的最大長度 --> <property name="cust_name" column="cus_name"></property> <property name="cust_source" column="cus_source"></property> <property name="cust_level" column= "cus_level"></property> <property name= "cust_linkman" column= "cust_link"></property> </class> </hibernate-mapping>
書寫主配置檔案hibernate.cfg.xml,如下圖:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 資料庫驅動 --> <property name="hibernate.connnection.driver_class">com.mysql.jdbc.Driver</property> <!-- url --> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_32</property> <!-- 資料庫連線使用者名稱 --> <property name="hibernate.connection.username">root</property> <!-- 資料庫連線密碼 --> <property name="hibernate.connection.password">1234</property> <!-- 資料庫方言 不同的資料庫中,sql語法略有區別,指定方言可以讓hibernate框架在生成sql語句時,針對資料庫的方言生成。 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 將hibernate生成的sql語句列印到控制檯 --> <property name = "hibernate.show_sql">true</property> <!--將hibernate生成的sql語句格式化(語法縮排) --> <property name="hhibernate.format_sql">true</property> <!-- ## auto schema export 自動匯出表結構. 自動建表 #hibernate.hbm2ddl.auto create 自動建表.每次框架執行都會建立新的表.以前表將會被覆蓋,表資料會丟失.(開發環境中測試使用) #hibernate.hbm2ddl.auto create-drop 自動建表.每次框架執行結束都會將所有表刪除.(開發環境中測試使用) #hibernate.hbm2ddl.auto update(推薦使用) 自動生成表.如果已經存在不會再生成.如果表有變動.自動更新表(不會刪除任何資料). #hibernate.hbm2ddl.auto validate 校驗.不自動生成表.每次啟動會校驗資料庫中表是否正確.校驗失敗. --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 核心配置檔案中關聯對映檔案 --> <!-- 引用orm元資料 路徑書寫:填寫src下的路徑 --> <mapping resource="/com/cn/domain/Customer.hbm.xml"/> </session-factory> </hibernate-configuration>
測試檔案Demo.java,如下圖:
package com.cn.Test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.cn.domain.Customer; /*學習SessionFactory * SessionFactory功能:用於建立操作資料庫核心物件session物件的工廠 * 簡單說功能就一個----建立session物件 * 注意:1.sessionfactory負責儲存和使用所有的配置資訊,消耗記憶體資源非常大 * 2.sessionFacory屬於執行緒安全的物件設計 * * * 學習session物件功能 *表達hibernate框架與資料庫之間的連線(會話),session類似於JDBC年代的connection物件, *還可以完成對資料庫中資料的增刪改查操作。 *session是hibernate操作資料庫的核心物件。 * * * transaction物件 * 封裝了事務的操作 * 開啟事務 * 提交事務 * 回滾事務 */ public class Demo { @Test public void fun1(){ //1.建立,呼叫空參構造 //2.讀取指定主配置檔案=>空參加載方法,載入src下的Hibernate.cfg Configuration conf = new Configuration().configure(); //3.根據配置資訊,建立Sessionfactory物件 SessionFactory sessionFactory = conf.buildSessionFactory(); //4.獲取session Session openSession = sessionFactory.openSession(); //5.開啟事務並獲得操作事務的tx物件 Transaction tx = openSession.beginTransaction(); //---------------------------------- Customer c = new Customer(); c.setCust_name("google公司"); openSession.save(c);//執行儲存 //-------------------------------------- tx.commit();//提交事務 openSession.close(); sessionFactory.close(); //openSession.get(arg0, arg1); } }
補充:Hibernate框架中如何新增約束:
1.Window-preference-搜尋catalog-Add ,如下圖:
1.
2.Location 中選擇要匯入的約束(以map為例)
key type:選擇uri
key:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd