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

首頁 > 學院 > 開發設計 > 正文

Hibernate4.x之入門篇

2019-11-14 21:57:46
字體:
來源:轉載
供稿:網友
Hibernate4.x之入門篇

Hibernate作為一個優秀的持久化框架、ORM框架。在日常的java開發中常常用到。本文主要通過一個簡單的例子來介紹下Hibernate4.x的入門知識。

新建一個Java項目,并加入Hibernate要使用的jar包和數據庫驅動包,

  1. 建立Hibernate的配置文件
  2. 新建持久化類
  3. 新建持久化類的配置文件
  4. 利用Hibernate API編寫測試類

完成后的項目結構大概如下圖:

  

Hibernate配置文件:hibernate.cfg.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6     <session-factory> 7         <!-- 配置連接數據庫的基本信息 --> 8         <PRoperty name="connection.username">scott</property> 9         <property name="connection.passWord">tiger</property>10         <property name="connection.driver_class">Oracle.jdbc.driver.OracleDriver</property>11         <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>12     13         <!-- 配置hibernate基本信息 -->14         <!-- hibernate所使用的數據庫方言 -->15         <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>16         17         <!-- 執行操作時是否在控制臺打印sql -->18         <property name="show_sql">true</property>19         20         <!-- 是否對SQL進行格式化 -->        21         <property name="format_sql">true</property>22         23         <!-- 指定自動生成數據表的策略 -->24         <property name="hbm2ddl.auto">update</property>25         26         <!-- 指定關聯的.hbm.xml 文件 -->27         <mapping resource="com/yl/hibernate/helloworld/News.hbm.xml"/>28 29     </session-factory>30 </hibernate-configuration>

持久化類:News.java

  

 1 package com.yl.hibernate.helloworld; 2  3 import java.sql.Date; 4  5 public class News { 6      7     private Integer id; 8     private String title; 9     private String author;10     11     private Date newsdate;12 13     public Integer getId() {14         return id;15     }16 17     public void setId(Integer id) {18         this.id = id;19     }20 21     public String getTitle() {22         return title;23     }24 25     public void setTitle(String title) {26         this.title = title;27     }28 29     public String getAuthor() {30         return author;31     }32 33     public void setAuthor(String author) {34         this.author = author;35     }36 37     public Date getNewsdate() {38         return newsdate;39     }40 41     public void setNewsdate(Date newsdate) {42         this.newsdate = newsdate;43     }44 45     public News(){}46     47     public News(String title, String author, Date newsdate) {48         super();49         this.title = title;50         this.author = author;51         this.newsdate = newsdate;52     }53 54     @Override55     public String toString() {56         return "News [id=" + id + ", title=" + title + ", author=" + author57                 + ", date=" + newsdate + "]";58     }59     60     61     62 }

持久化類的配置文件:News.hbm.xml

 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2014-11-19 21:19:05 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6     <class name="com.yl.hibernate.helloworld.News" table="NEWS"> 7          8         <id name="id" type="java.lang.Integer"> 9             <column name="ID" />10             <!-- 指定主鍵的生成方式,native:使用數據庫本地方式 -->11             <generator class="native" />12         </id>13         <property name="title" type="java.lang.String">14             <column name="TITLE" />15         </property>16         <property name="author" type="java.lang.String">17             <column name="AUTHOR" />18         </property>19         <property name="newsdate" type="java.sql.Date">20             <column name="NEWSDATE" />21         </property>22     </class>23 </hibernate-mapping>

測試類:HibernateTest.java

 1 package com.yl.hibernate.helloworld; 2  3 import java.sql.Date; 4  5 import org.hibernate.Session; 6 import org.hibernate.SessionFactory; 7 import org.hibernate.Transaction; 8 import org.hibernate.cfg.Configuration; 9 import org.hibernate.service.ServiceRegistry;10 import org.hibernate.service.ServiceRegistryBuilder;11 import org.junit.Test;12 13 public class HibernateTest {14 15     @Test16     public void test() {17         //1.創建一個SessionFactory對象18         SessionFactory sessionFactory = null;19         20         //1.1 創建Configuration對象,對應hibernate的基本配置信息和對象關聯映射信息21         Configuration configuration = new Configuration().configure();22         //4.0之前的創建方式23         //sessionFactory = configuration.buildSessionFactory();24         25         //1.2  創建一個ServiceRegistry 對象:hibernate4.x新添加的對象。hibernate的任何配置和服務器都需要在該對象中注冊后才能有效26         ServiceRegistry serviceRegistry = 27                 new ServiceRegistryBuilder().applySettings(configuration.getProperties())28                                             .buildServiceRegistry();29         30         //1.3 創建SessionFactory對象31         sessionFactory = configuration.buildSessionFactory(serviceRegistry);32         33         //2.創建一個Session對象34         Session session = sessionFactory.openSession();35         //3.開啟事務36         Transaction transaction = session.beginTransaction();37         //4.執行保存操作38         News news = new News("Java", "yulei", new Date(new java.util.Date().getTime()));39         session.save(news);40         41         /*News news2 = (News) session.get(News.class, 2);42         System.out.println(news2);*/43         //5.提交事務44         transaction.commit();45         //6.關閉Session46         session.close();47         //7.關閉SessionFactory 對象48         sessionFactory.close();49         50     }51 52 }

----------------------------------------------------以上為代碼部分--------------------------------------------------------------------------------------------

----------------------------------------------------以下為對部分代碼的解釋--------------------------------------------------------------------------------------------

Configuratioin類  Configuratioin類負責管理Hibernate的配置信息。包括以下內容:    Hibernate運行的底層信息:數據庫的URL、用戶名、密碼、JDBC驅動類、數據庫Dialect、數據庫連接池等(對應hibernate.cfg.xml)文件    持久化類與數據庫表的映射關系(*.hbm.xml文件)  創建Configuration的兩種方式:    屬性文件:Configuration cfg = new Configuration();    XML文件:Configuration cfg = new Configuration().configuration();  Configuration的configuration方法還支持帶參數的訪問:    File file = new File("simple.xml");    Configuration cfg = new Configuration().configuration(file);

SessionFactory接口  針對單個數據庫映射關系經過編譯后的內存映像,是線程安全的。  SessionFactory對象一旦構建完畢,即被賦予特定的配置信息  SessionFactory是生成Session的工廠  構造SessionFactory很消耗資源,一般情況下一個應用中只初始化一個SessionFactory對象  Hibernate4新增了一個ServiceRegistry接口,所有基于Hibernate的配置或服務都必須統一向這個ServiceRegistry注冊后才能生效  Hibernate4中創建SessionFactory的步驟:    

 1 //1.1 創建Configuration對象,對應hibernate的基本配置信息和對象關聯映射信息 2 Configuration configuration = new Configuration().configure(); 3  4 //1.2 創建一個ServiceRegistry 對象:hibernate4.x新添加的對象。hibernate的任何配置和服務器都需要在該對象中注冊后才能有效 5 ServiceRegistry serviceRegistry =  6 new ServiceRegistryBuilder().applySettings(configuration.getProperties()) 7 .buildServiceRegistry(); 8  9 //1.3 創建SessionFactory對象10 sessionFactory = configuration.buildSessionFactory(serviceRegistry);

Session接口  Session是應用程序與數據庫之間交互操作的一個單線程對象,是Hibernate運作的中心,所有持久化對象必須在session的管理下才可以進行持久化操作。此對象的生命周期很短。Session對象有一個一級緩存,顯示執行flush之前,所有的持久層操作的數據都緩存在session對象處。相當于JDBC中的Connection?! 〕志没惻cSession關聯起來后就具有了持久化的能力  

  Session類的方法:    取得持久化對象的方法:get()、load()    持久化對象的保存、更新和刪除:save()、update()、saveOrUpdate()、delete()    開啟事務:beiginTransaction()    管理Session的方法:isOpend()、flush()、clear()、evict()、close()等

Transaction(事務)  代表一次原子操作,它具有數據庫事務的概念。所有持久層都應該在事務管理下進行,即使是只讀操作?! ransaction tx = session.beginTransaction();  常用方法:    commit():提交相關聯的session實例    rollback():撤銷事務操作    wasCommitted():檢查事務是否提交Hibernate配置文件的兩個配置項  hbm2ddl.auto:該屬性可幫助程序員實現正向工程,即由Java代碼生成數據庫腳本,進而生成具體的表結構。取值create|update|create-drop|validate    create:會根據.hbm.xml文件來生成數據庫表,但是每次運行都會刪除上一次的表,重新生成表,哪怕二次沒有任何改變    create-drop:會根據.hbm.xml文件生成表,但是SessionFactory一關閉,表就自動刪除    update:最常用的屬性值,也會根據.hbm.xml文件來生成數據庫表,但若.hbm.xml文件和數據庫中對應的表的表結構不同,Hibernate將更新數據表結構,但不會刪除已有的行和列    validate:會和數據庫中的表進行比較,若.hbm.xml文件中的列在數據表中不存在,則拋出異?! ?/p>

  format_sql:是否將SQL轉化為格式良好的SQL。取值為true|false


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 承德市| 禄丰县| 青海省| 盱眙县| 贵定县| 安福县| 沂源县| 江山市| 海安县| 浦东新区| 聂拉木县| 铜川市| 容城县| 庄河市| 奉化市| 贵溪市| 井冈山市| 建水县| 叙永县| 海宁市| 吉隆县| 剑阁县| 雷州市| 石首市| 孟连| 德格县| 海门市| 开化县| 武宣县| 曲沃县| 漯河市| 康定县| 聂拉木县| 邢台县| 台南市| 油尖旺区| 京山县| 东光县| 萍乡市| 黄平县| 清水河县|