Hibernate 基礎
× ORM (Object/Relationsship Mapping):對象/關系映射
利用面向對象思想編寫的數據庫應用程序最終都是把對象信息保存在關系型數據庫中,於是要編寫很多的底層數據庫相關的SQL語句。便有了ORM
過多編寫底層SQL語句的弊端:
1.不同的數據庫使用的SQL語法不通。比如PL/SQL(Oracle)與T/SQL(Microsoft[SQLServer])
2.同樣的功能在不同的數據庫中有不同的實現方式。比如:分頁SQL
3.程序過分你依賴SQL會對程序的移植、擴展以及維護等待來很大的隱患
× 常見的ORM框架:EJB(JAVAEE規範)[ 重量級ORM框架技術 ]、Hibernate
× 使用JUnit進行單位測試註解和執行順序:@Before:初始化方法 --> @Test:測試方法 --> @After:釋放資源
一、Hibernate簡介
Hibernate是Java領域的一款開源ORM框架技術(對JDBC進行了輕量級的對象封裝 [ 間接(底層)使用了JDB技術 ])。
作用:開發不同數據的應用程序,省去對SQL語句細節的較勁,專心對邏輯程序進行開發。
持久化層:介於對象信息與數據信息的相互轉換,說白了就是將對象信息存入數據庫 或 從數據庫提取信息以對象形式進行封裝。
二、搭建Hibernate準備
1. 開發工具:MyEclipse / Eclipse
2. 插件:Hibernate Tools for Eclipse Plugins(JBoss推出綜合開發工具插件[for Eclipse],可簡化ORM框架Hibernate,以及JBoss Seam,EJB3等的開發工作)
3. jar包:
3.1 Hibernate jar包 eg : MyEclipse已有集成的Facet使用,但Eclipse需要導入關鍵jar包
3.2 數據庫jar包 eg : Mysql:mysql-connector-java-x.x.x-bin.jar
3.3 測試工具JUNIT jar包 junit-x.xx.jar
三、基礎Hibernate建設步驟
3.1 正向創建步驟:通過JavaBean(類),進行映射文件創建,通過執行訪問數據庫的代碼,創建數據表並寫入數據。
1. 創建Hibernate的配置文件
2. 創建持久化類
3. 創建對象-關系映射文件
4. 通過Hibernate API編寫訪問數據庫的代碼
3.2 逆向創建步驟:通過Datatable(數據表),
3.1 正向創建(路徑) : create cfg.xml -->create class -->create hbm.xml --[執行通過Hibernate API編寫訪問數據庫的代碼]--create datatable--write data-->End
1) 創建Hibernate配置文件(Hibernate.cfg.xml)[hibernate.cfg.xml常用配置]
1 <hibernate-configuration> 2 <session-factory> 3 <!-- 兩條url均可以使用 --> 4 <property name="connection.url"> 5 jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8 6 </property> 7 <!-- <property name="connection.url"> 8 jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&characterEncoding=UTF-8 9 </property> --> 10 <property name="connection.username">root</property> 11 <property name="connection.password">root</property> 12 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 13 <!-- 14 <property name="dialect">org.Hibernate.dialect.MySQLDialect</property> 15 --> 16 <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 17 18 <!-- 三個常見屬性 --> 19 <property name="show_sql">true</property> 20 <property name="format_sql">true</property> 21 <property name="hbm2ddl.auto">create</property> 22 23 <!-- 創建問持久化映射後,進行關系映射配置 --> 24 <mapping resource="Student.hbm.xml" /> 25 </session-factory> 26 </hibernate-configuration>Hibernate.cfg.xml
2) 創建持久化類
//創建一個符合JavaBean規範的類即可
3) 創建對象映射文件(ClassName.hbm.xml)[ClassName.hbm.xml常用配置]
1 <hibernate-mapping> 2 <class name="類名" table="數據表名"> 3 <!-- 代表該映射的ID --> 4 <id name="id" type="int"> 5 <column name="ID" /> 6 <generator class="assigned" /> 7 </id> 8 <!-- 映射關系(類.屬性名 <==>數據表.字段名) --> 9 <property name="屬性名" type="屬性類型(需要全稱)"> 10 <column name="字段名" /> 11 </property> 12 </class> 13 </hibernate-mapping> 14 <!-- ------------------------------------- 分割線 ------------------------------------- --> 15 <!-- 以某個類為例 --> 16 <hibernate-mapping> 17 <class name="Student" table="STUDENT"> 18 <!-- 代表該映射的ID --> 19 <id name="id" type="int"> 20 <column name="ID" /> 21 <generator class="assigned" /> 22 </id> 23 <!-- 映射關系(類.屬性名 <==>數據表.字段名) --> 24 <property name="name" type="java.lang.String"> 25 <column name="NAME" /> 26 </property> 27 <property name="gender" type="java.lang.String"> 28 <column name="GENDER" /> 29 </property> 30 <property name="birthday" type="java.util.Date"> 31 <column name="BIRTHDAY" /> 32 </property> 33 <property name="address" type="java.lang.String"> 34 <column name="ADDRESS" /> 35 </property> 36 </class> 37 </hibernate-mapping>ClassName.hbm.xml
4) 通過Hibernate API編寫訪問數據庫的代碼
步驟:創建配置對象 --> 創建服務註冊對象 --> 創建會話工廠對象 --> 打開會話 --> 開啟事務
在JUnit下調試,上代碼!!!【Hibernate Session相關點】
1 private SessionFactory sessionFactory; 2 private Session session; 3 private Transaction transaction; 4 5 @Before 6 public void init() { 7 // 1.創建配置對象 8 Configuration config = new Configuration().configure(); 9 10 // 2.創建服務註冊對象 11 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); 12 13 // 3.創建會話工廠 14 sessionFactory = config.buildSessionFactory(serviceRegistry); 15 16 // 4.打開會話對象 17 session = sessionFactory.openSession(); 18 19 // 5.開啟事務 20 transaction = session.beginTransaction(); 21 } 22 23 @After 24 public void destory() { 25 // 提交事務 26 transaction.commit(); 27 // 關閉資源 28 session.close();// 關閉會話 29 sessionFactory.close();// 關閉會話工廠 30 } 31 32 @Test 33 public void testSaveStudent() { 34 Student student = new Student(1, "測試1", "男", new Date(), "地址1"); 35 session.save(student);// 保存對象進入數據庫 36 }Base Create Code
3.2 逆向創建(步驟):
To be continued
Hibernate 基礎