Hibernate入門基礎(二)

篇(一)

前一篇簡單實現了利用hibernate進行數據庫的讀取操作,此篇主要說明如何利用hibernate進行自動新建表並且插入操作
第一步新建項目
本次使用普通的java project項目進行演示,首先新建java project項目
建好項目後項目目錄下只有一個src目錄,我們在他的同級目錄下,也就是項目根目錄下,再新建一個lib目錄,然後吧mysql官方提供的jar包複製進來,然後將hibernate解壓目錄下lib目錄下的jpa-metamodel-generator與required中的jar包也全部複製進來,然後再看我們的lib目錄
在這裏插入圖片描述然後還沒有完還需要右擊lib目錄,在選項中選擇Build Path->Configure Build Path…然後可以看到
在這裏插入圖片描述我這裏是已經配置完成的,如果沒有配置的話,這個顯示框中應該是沒有這麼多東西的,現在點Add External JARs
在這裏插入圖片描述將我們剛纔複製進lib目錄下的所有jar包選中完成,如果沒有問題的話在Referenced Libraries下可以看到這些jar包,不過有所不同的是這些jar包都是奶瓶裝圖標
在這裏插入圖片描述如果是這樣的話那就沒有問題了,可以開始寫代碼了!

第二步編寫兩個xml文件
前一篇講過我們需要先寫兩個xml文件,一個是映射配置文件在此文件中設置我們之後要寫的持久化類中的屬性與表字段的對應關係,此文件文件名與保存路徑沒有限制,因爲他不會直接被加載,還有一個hibernate的核心配置文件,此文件中設置數據庫鏈接的一些參數,包括設置數據庫方言以及數據庫登錄鏈接,登錄用戶名和密碼,還有是否進行自動創建表,前篇已經詳細說過其他配置,本篇不再贅述,本篇主要詳細說說自動創建表
映射文件:

<?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>
	<class name="cn.sqlrun.sqlrun" table="sqlrun">
		<id name="id" column="id">
			<generator class="native"/>
		</id>
		
		<property name="userName" column="userName"/>
	</class>
</hibernate-mapping>

映射文件比較簡單,也很好理解,前篇也都有說明,本篇不再贅述

核心配置文件

<?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.connection.driver_class">com.mysql.jdbc.Driver</property>
			<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
			<property name="hibernate.connection.username">root</property>
			<property name="hibernate.connection.password">1565203609AAaa</property>
			
			<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
			<!--輸出sql語句-->
			<property name="show_sql">true</property>
			
			<!--設置自動創建表-->
			<property name="hibernate.hbm2ddl.auto">update</property>
			
			<mapping resource="cn/sqlrun/sqlrun.hbm.xml"/>
			
		</session-factory>
	</hibernate-configuration>

關於自動創建表值的設置說明:
update:表示自動根據model對象來更新表結構,啓動hibernate時會自動檢查數據庫,如果缺少表,則自動建表;如果表裏缺少列,則自動添加列。

還有其他的參數:
create:啓動hibernate時,自動刪除原來的表,新建所有的表,所以每次啓動後的以前數據都會丟失。

create-drop:啓動hibernate時,自動創建表,程序關閉時,自動把相應的表都刪除。所以程序結束時,表和數據也不會再存在。

validate : 加載hibernate時,驗證創建數據庫表結構

要注意的是hibernate只會幫我們創建表不會爲我們創建庫,庫需要手動創建

核心配置文件中,其他設置前篇都有說明,此處要進行說明的是<property name="show_sql">true</property>這一句的主要作用是將hibernate生成的sql語句輸出到控制檯,還有<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>在前一篇中我說過這是設置數據庫方言,而在上一篇中此標籤的值我說是設置成org.hibernate.dialect.MySQLDialec在不進行自動生成表的操作時,這樣寫的確不會出錯,但如果用了hibernate5.x版本並且設置了自動創建表在此處就要變成了org.hibernate.dialect.MySQL5Dialec否則會報錯ERROR: Table ‘xxxx.xxx’ doesn’t exist
這樣以來兩個xml文件就寫好了

第三步編寫持久化類
還和前一篇一樣,一個類屬性對應一個表字段名,持久化類對應一個表,所以爲了更好理解屬性名就是字段名,類名就是表名

package cn.sqlrun;

public class sqlrun {
	
	private int id;
	private  String userName;

	public void setId(int id) {
		this.id = id;
	}
	
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	public int getId() {
		return id;
	}
	
	public String getUserName() {
		return userName;
	}
}

第四步編寫測試類

package cn.test;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import cn.sqlrun.sqlrun;

public class test {
	public static void main(String[] args) {
		Configuration cfg=new Configuration().configure();
		SessionFactory sFactory=null;
		Transaction txTransaction=null;
		Session session=null;
		try {
			sFactory=cfg.buildSessionFactory();
			//開啓session
			session=sFactory.openSession();
			//打開事物
			txTransaction=session.beginTransaction();
			
			//執行插入保存操作
			sqlrun sqlbean=new sqlrun();
			sqlbean.setId(1);
			sqlbean.setUserName("www");
			
			session.save(sqlbean);
			//提交事物
			txTransaction.commit();
		}catch (Exception e) {
			System.out.println(e.getMessage());
		}finally {
			//關閉session
			session.close();
		}
	}
}

查看最後結果
在這裏插入圖片描述插入成功

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