Hibernate5簡單demo

Hibernate 簡介

Hibernate 是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關係,是一個全自動的ORM框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 一句話:Hibernate 是一個實現了 ORM 思想的框架,封裝了 JDBC。 

ORM: 對象關係映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping)是一種程序技術,用於實現面向對象編程語言裏不同類型系統的數據之間的轉換。其實就是將關係和對象通過映射文件進行聯繫。我們在程序中只需要操作對象即可操作對應的數據庫表的數據。

注意:POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBeans,

使用環境: 
1、Hibernate 5.2.17, JBoss tools 插件生成配置文件

2、Eclipse 4.7 

3、jdk1.8 

4、MySQL5.7 

5.  maven 

 

一、創建一個簡單的 maven 項目 導包 和  配置  Hibernate5 主配置文件

導包

  <dependencies>
	<dependency>
	    <groupId>org.hibernate</groupId>
	    <artifactId>hibernate-core</artifactId>
	    <version>5.2.17.Final</version>
	</dependency>
  	
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.46</version>
	</dependency>
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.10</version>
    	<scope>test</scope>
	</dependency>
  </dependencies>

Hibernate5 主配置文件:hibernate.cfg.xml  

注意:方言  MySQL5  指5.0+版本的MySQL

自動生成表結構策略(開發配置, 生產不配置)

<property name="hbm2ddl.auto">update</property>

value -- update(使用最多):當數據庫不存在表時,hibernate啓動後會自動生成表結構。

             當數據庫表存在時,如果一樣,則只會寫入數據,不會改變表結構。

             當數據庫表存在時,如果不一樣,則會修改表結構,原有的表結構不會改變。

   create(很少):無論表結構是否存在,hibernate啓動後都會重新生成表結構。(造成之前的數據丟失)

   create-drop(極少):無論表結構是否存在,hibernate啓動都會重新生成表結構。並且hibernate關閉後,表結構會被刪除。來無影去無蹤。

   validate(很少):不會創建表結構,不會修改表結構。校驗與數據庫中的表結構是否一樣,如果不一樣則報異常。

 <session-factory>
  <!-- 數據庫基本信息 -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_hibernate5</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">123456</property>
  <!-- hibernate配置信息    MySQL5指5.0+版本的MySQL-->
  <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  
  <!-- ORM 映射關係  -->
  <mapping resource="cn/jq/hibernate5/model/Student.hbm.xml"/>
 </session-factory>

 

二、 創建一個 POJO 類 和 Xxxt.hbm.xml 映射文件

POJO 類:必須要有無參構造器

public class Student {
	private int id;
	private String name;
	private String sex;
	private Date birthday;
...
    //必須要有無參構造器

    //getter setter
}

Xxxt.hbm.xml插件生成, 簡單修改

    <class name="cn.jq.hibernate5.model.Student" table="T_STUDENT">
        <id name="id" type="int">
            <column name="ID" />
            <!-- 設置主鍵的生成方式 -->
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" />
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY" />
        </property>
    </class>

 

三、 創建 Junit 測試類

 注意: SessionFactory 工廠類的創建過程

Hibernate5 規定: 所有配置或服務要生效, 必須將其註冊到一個 StandardServiceRegistry  服務註冊類中

@Test
	public void test() {
		//1. 創建一個 SessionFactory 工廠類: 通過它建立一個與數據庫連接回話 session 
		SessionFactory sessionFactory = null;
		//配置類: 封裝有我們的配置文件裏的配置信息, 返回的 configuration 包含有配置文件裏的具體信息
		Configuration configuration = new Configuration().configure();
		//Hibernate5規定: 所有配置或服務要生效, 必須將其註冊到一個服務註冊類中
		StandardServiceRegistry serviceRegistry = configuration.getStandardServiceRegistryBuilder().build();
		sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
		
		//2. 通過工廠類開啓 Session 對象
		Session session = sessionFactory.openSession();
		//3. 開啓事務
		Transaction transaction = session.beginTransaction();
		
		//4. 執行 CRUD 操作
		Student student = new Student("李四","男",new Date());
		session.save(student);
		
		//5. 提交事務
		transaction.commit();
		//6. 關閉 Session
		session.close();
		//7. 關閉工廠類
		sessionFactory.close();
	}

 

四、數據庫結果

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章