1. 程式人生 > >Hibernate學習筆記(一)之——根據配置檔案自動建立表的兩種方式(註解方式和配置檔案方式)

Hibernate學習筆記(一)之——根據配置檔案自動建立表的兩種方式(註解方式和配置檔案方式)

環境準備:jdk  eclipse   hibernate、mysql jar包

專案截圖:

Student是根據配置檔案建立表,Teacher是根據註解建立表

Student.java

package com.java1234.model;

public class Student {
	private long id;
	private String name;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

Student.hbm.xml

<?xml version="1.0"?>
<!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.java1234.model">
	<class name="Student" table="t_student"><!-- table="t_student" 對應資料庫的表明 -->
		<!-- 主鍵 -->
		<id name="id" column="stuId">
			<generator class="native"></generator>
		</id>
		<property name="name"></property>
	</class>
</hibernate-mapping>

Teacher.java

package com.java1234.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="t_teacher")//對映表名
public class Teacher {
	
	private long id;
	private String name;
	
        //主鍵
	@Id
	@GeneratedValue(generator="_native")
	@GenericGenerator(name="_native",strategy="native")
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Teacher [id=" + id + ", name=" + name + "]";
	}
	
}

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="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>

       
        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
	
        <!-- 控制檯顯示SQL -->
        <property name="show_sql">true</property>

        <!-- 自動更新表結構 -->
        <property name="hbm2ddl.auto">update</property>
        
  		<mapping resource="com/java1234/model/Student.hbm.xml"/><!- 根據配置檔案自動建表 ->
		<mapping class="com.java1234.model.Teacher"></mapping><!- 根據註解自動動建表 ->
    </session-factory>

</hibernate-configuration>

HibernateUtil.java

package com.java1234.util;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {
	private static final SessionFactory sessionFactory = buildSessionFactory();
	
	private static SessionFactory buildSessionFactory() {
		Configuration configuration = new Configuration().configure();//底層預設載入配置src目錄下的hibernate.cfg.xml配置檔案,所以配置檔名稱寫死
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();//例項化服務登記
		SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);//獲取Session工廠
		return sessionFactory;
	}
	
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}

測試類:執行測試類就自動建立了

package com.java1234.service;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.java1234.model.Student;

public class StudentTest {
	private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
	public static void main(String[] args) {
		Session session = sessionFactory.openSession();
		session.beginTransaction();//開啟事務
		
		/*Student s = new Student();
		s.setName("張三");*/
		
		
		session.getTransaction().commit();//提交事務
		session.close();//關閉session
		sessionFactory.close();
	}
	
}

相關推薦

Hibernate學習筆記——根據配置檔案自動建立方式註解方式配置檔案方式

環境準備:jdk  eclipse   hibernate、mysql jar包 專案截圖: Student是根據配置檔案建立表,Teacher是根據註解建立表 Student.java package com.java1234.model; publi

深度學習筆記——理論與推導概念,成本函式與梯度下降演算法初識

前情提要 一、神經網路介紹 概念:Learning ≈ Looking for a Function 框架(Framework): What is Deep Learning? 深度學習其實就是一個定義方法、判斷方法優劣、挑選最佳的方法的過程:

單鏈建立方法頭插法尾插法

線性表可分為順序儲存結構和鏈式儲存結構順序儲存結構的建立,其實就是一個數組的初始化,即宣告一個型別和大小的陣列並賦值的過程。而單鏈表和順序儲存結構就不一樣,它的每個資料的儲存位置不需要像陣列那樣集中,它可以很散,是一種動態結構。對於每個連結串列來說,它所佔用的空間大小和位置並

使用Spring整合Hibernate配置根據實體類自動建立

<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan

Spring Data JPA 配置資料庫根據實體屬性自動建立結構

一、實體屬性 @Entity(name = "recommend_lottery") public class Student{@Id@Column(name = "id", nullable = false)private String id; // id@Column(

Hibernate學習筆記 --- 使用Hibernate連接數據庫

比較 得到 對象 urn stack close logs mysql .org Hibernate用來操作數據庫,它對開發人員隱藏了底層JDBC的操作及不同數據庫的差異,通過它,開發人員基本上只用關心自己的對象就可以了 構建一個最基本的Hibernate應

[學習筆記] 《程式碼整潔道》

[學習筆記] 《程式碼整潔之道》—第1章 整潔程式碼 程式設計:將需求明確到機器可以執行的細節程度 —> 程式碼 保持程式碼整潔:讓營地比你來時更乾淨! [學習筆記]《程式碼整潔之道》—第2章 有意義的命名 名副其實 說起來簡單,但這是很嚴肅的事!

Hibernate學習筆記---通過loadget方法來查詢物件只能根據主鍵來查詢

下面的例子是說明如何來查詢一個物件。 get方法(get方法一經呼叫,會立即發出get方法) package com.ahuzl.hibernate; import java.util.Date;import org.hibernate.Session;import org

Java學習筆記——排序算法進階排序堆排序與分治並歸排序

進行 技術分享 ring http 沒有 oid 有序 重復 調整 春蠶到死絲方盡,蠟炬成灰淚始幹               ——無題 這裏介紹兩個比較難的算法: 1、堆排序 2、分治並歸排序 先說堆。 這裏請大家先自行了解完全二叉樹的數據結構。 堆是完全二叉樹。

[知了堂學習筆記]_JS小遊戲打飛機3-飛機之間的互相撞擊,boss的出現,以及控制boss死亡

時間 i++ score console function sss 間隔 app tint 我的小飛機和敵軍小飛機撞擊的效果的實現: 1 /** 2 * 定義我的飛機與敵機碰撞的方法: 3 */ 4 function destoryMyPlane(){ 5

Hibernate學習筆記1---hibernate快速上手與準備工作

成了 -- 開源 工作 快速 tar ref orm 磁盤 持久層介紹 持久化:將內存中的數據保存在磁盤等存儲設備中。 持久化對象:指已經存儲在數據庫護著磁盤的業務對象 經典的軟件應用體系結構(三層結構) 在三層結構中,由於業務邏輯除了負責業務邏輯以外,還要負責相關的數據

Hibernate學習筆記3---hibernate關聯關系映射

gen -m type foreign out eas ner 機制 路徑 一對一關聯 假設有兩個持久化類(實體類)User與Address,它們之間存在一對一的關系 1,通過主鍵關聯(個人偏向另外一種) User.hbm.xml文件配置 <id name="u

Hibernate學習筆記5---Query接口

center 結束 mce factory rst lis 聚集 數據庫 ber Hibernate中具有三種檢索方式(HQL,QBC,SQL) Query接口 一個查詢接口,用於向數據庫中查詢對象。並控制執行查詢的過程。Query接口內封裝了一個HQL查詢語句。 舉個栗子

Hibernate學習筆記 --- 使用註解定義ORM配置

www. 可能 hibernate spa cut 數據 mysq provide 維護成本 ORM配置的定義,除了用XML文件之外,還可以使用註解的方式。使用XML的優點是如果配置有變更,在僅更改配置的情況下,不需要重新編譯(作為數據庫表的映射類,除了表字段類型變

Hibernate學習筆記 --- 映射枚舉類型

enume rto 希望 enum 類名 賦值 rom cart org 對於枚舉類型,不能通過org.hibernate.annotations.Type註解來簡單的映射對應的數據庫字段類型(除非自定義類型)。對此,Hibernate提供了javax.persis

Hibernate學習筆記 --- 映射基本數據類型的List集合

varchar prim drop n) 進行 lis auth pos 方案 集合按其內元素的數據類型分為兩種:基本數據類型集合及復雜對象類型集合,Hibernate對於兩類集合提供不同的映射方式。(在類上以@Embeddable註解的復雜對象數據類型處理方式同基本數據類

Hibernate學習筆記 --- 創建基於中間關聯的多對多映射關系

mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,

Go語言學習筆記: 切片slice

操作 容量 方括號 一個 組類型 學習 中學 slice 修改 Go語言學習筆記十一: 切片(slice) 切片這個概念我是從python語言中學到的,當時感覺這個東西真的比較好用。不像java語言寫起來就比較繁瑣。不過我覺得未來java語法也會支持的。 定義切片 切片可以

Hibernate學習筆記2.4Hibernate核心開發接口狀態

thread rsa 分享 action let 能力 ima 方法 如果 1.configuration(配置信息管理,產生sessionfactory) sessionfactory管理一系列的連接池 opensession 永遠打開新的,需要手動close get

Hibernate學習筆記註解

date out 語句 數據庫 sca 進制 sum default tab 1、@Entiy 實體類註解 2、@Table 映射表 (name=“”)表名 3、@Coulmn @Column( name