hibernate5(2)初入門配置例項
入門例項:向資料庫插入一個物件
1. 第一步需要引入我們的jar包,推薦使用maven管理專案,直接在pom.xml中新增
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.hibernate-version>5.1.0.Final</org.hibernate-version>
</properties>
<dependencies>
<dependency >
<groupId>junit</groupId><!-- 我們測試時使用junit-->
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId><!-- hibernate內建日誌記錄所需包-->
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
<scope >runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${org.hibernate-version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${org.hibernate-version}</version>
</dependency>
<dependencies>
2. 配置hibernate.cfg.xml
在類根路徑下建立hibernate.cfg.xml,在測試檔案中,我們會預設讀取此位置下此名字的hibernate配置檔案。
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/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="connection.pool_size">5</property>
<!-- 每次從資料庫中取出並放到JDBC的Statement中的記錄條數。Fetch Size設的越大,讀資料庫的次數越少,速度越快,Fetch Size越小,讀資料庫的次數越多,速度越慢-->
<property name="jdbc.fetch_size">50 </property>
<!--批量插入,刪除和更新時每次操作的記錄數。Batch Size越大,批量操作的向資料庫傳送Sql的次數越少,速度就越快,同樣耗用記憶體就越大-->
<property name="jdbc.batch_size">23 </property>
<!-- SQL 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- 在控制檯輸出sql語句 -->
<property name="show_sql">true</property>
<!-- 在啟動時根據配置更新資料庫 -->
<property name="hbm2ddl.auto">update</property>
<mapping class="com.zeng.model.User"/><!-- 註冊我們的實體對映類-->
</session-factory>
</hibernate-configuration>
3. 編寫實體類物件
hibernate是一個ORM(Object-Relation-Mapping)物件關係對映型框架,我們通過建立實體類,一一對應到我們的資料庫表。一旦配置好我們的實體類,hibernate能夠自動幫我們完成資料庫建表操作。本系列環境基於hibernate5,這裡優先使用註解的形式來配置實體。
package com.zeng.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity//聲明當前類為hibernate對映到資料庫中的實體類
@Table(name = "t_user")//宣告在資料庫中自動生成的表名為t_user
public class User {
@Id//宣告此列為主鍵
@GeneratedValue(strategy = GenerationType.AUTO)//根據不同資料庫自動選擇合適的id生成方案,這裡使用mysql,為遞增型
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
關於註解配置實體類的更多屬性,我們會在後面系列文章詳細提到。
4. 編寫測試檔案
在我們完成資料庫操作前,需要先知道hibernate的兩個核心類:
類名 | 說明 |
---|---|
SessionFactory (org.hibernate.SessionFactory) | 針對單個數據庫對映關係經過編譯後的記憶體映象,是執行緒安全的(不可變)。 它是生成Session的工廠。 |
Session (org.hibernate.Session) | 表示應用程式與持久儲存層之間互動操作的一個單執行緒物件,此物件生存期很短,隱藏了JDBC連線,也是Transaction的工廠。 |
一般在使用hibernate中,我們往往初始話一個SessionFactory物件,因為它是重量級物件,建立需要耗費大量的資源。一旦我們需要進行資料庫操作時,我們可以建立新的Session會話物件,來進行我們的資料庫操作。明白這一點後,我們開始我們的測試檔案編寫
@Test//我們使用junit進行測試
public void test1(){
//相對於3.x.x版本hibernate,我們在4.x.x採用如下方式獲取我們的會話工廠:
//1. 解析我們在hibernate.cfg.xml中的配置
// Configuration configuration = new Configuration().configure();
//2. 建立服務註冊類,進一步註冊初始化我們配置檔案中的屬性
// ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
//3. 建立我們的資料庫訪問會話工廠
// SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
//但在5.1.0版本彙總,hibernate則採用如下新方式獲取:
//1. 配置型別安全的準服務註冊類,這是當前應用的單例物件,不作修改,所以宣告為final
//在configure("cfg/hibernate.cfg.xml")方法中,如果不指定資源路徑,預設在類路徑下尋找名為hibernate.cfg.xml的檔案
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("cfg/hibernate.cfg.xml").build();
//2. 根據服務註冊類建立一個元資料資源集,同時構建元資料並生成應用一般唯一的的session工廠
SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
/****上面是配置準備,下面開始我們的資料庫操作******/
Session session = sessionFactory.openSession();//從會話工廠獲取一個session
Transaction transaction = session.beginTransaction();//開啟一個新的事務
User user = new User();
user.setName("zengh");
session.save(user);
transaction.commit();//提交事務
}
執行測試檔案。我們看到控制檯輸出:
Hibernate: insert into t_user (name) values (?)
檢視mysql資料庫,發現hibernate已自動幫我們建立好表格,同時User資料插入成功。
mysql> desc t_user;
+——-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+——-+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
+——-+————–+——+—–+———+—————-+
2 rows in set (0.00 sec)
原始碼下載
相關推薦
hibernate5(2)初入門配置例項
入門例項:向資料庫插入一個物件 1. 第一步需要引入我們的jar包,推薦使用maven管理專案,直接在pom.xml中新增 <properties> <project.build.sourceEncoding>UTF-
springMVC4(1)角色解析與入門配置例項
在一個web專案中,典型的MVC架構將後臺分為Controller、Service、DAO三層,分別實現不同的邏輯功能,下面是一個web請求過程中,我們後臺的處理過程: Created with Raphaël 2.1.0客戶端客戶端controllerc
關於neo4j初入門(2)
結果 esc 添加 刪除節點 comm 瀏覽器 rom 關於 標記 DELETE刪除 刪除節點及相關節點和關系。 DELETE <node-name-list> DELETE <node1-name>,<node2-name>,&
Linux入門小抄-part3.2-Linux網路配置(下)和基礎知識(上)
網路配置(下) 修改主機名 檢視主機名 hostname 暫時性修改一次主機名,使用hostname命令即可 hostname hadoop
Git學習系列2 初配置及結構
一 初配置 安裝完成之後,在開始選單裡面找到 "Git --> Git Bash",如下 需要配置使用者名稱和郵箱,如果不清楚是否已配置,可用 git config user.name 和git config user.email進行檢視。 如果沒有進行配置,用gi
Ubuntu 安裝 MyCat 初入門 與 ThinkPHP 連結MyCat配置 ( 親測 )
安裝openJDK sudo apt-get install openjdk-8-jdk java -version MyCat是給予java開發的 所以要安裝jave-jdk的包 下載Mycat 可以從MyCat的 http://dl.mycat.io/ 上下
React從入門到架構(2)--如何配置你的“CSS和JS路徑”
好,我們接著上一篇文章【React從入門到架構(1)–手把手建立、解讀以及開發第一個ReactApp】的內容講: (1)修改“HTML”程式碼,建立初佈局 在src/App.js這個檔案中,我們看到了熟悉已久的HTML程式碼,不過我要說的是,這並不是真正的HTML,而是一種JSX語言
.NET Core 2.x中使用Named Options處理多個強型別配置例項
來源: Using multiple instances of strongly-typed settings with named options in .NET Core 2.x 作者: Andrew Lock 譯者: Lamond Lu .NET Core從1.0版本開始,就已經開始使用
Java-RPC:2)NIO入門初窺
Java NIO(New IO)是從Java 1.4版本開始引入的一個新的IO API,可以替代標準的Java IO APIChannels and Buffers(通道和緩衝區):標準的IO基於位元組流和字元流進行操作的,而NIO是基於通道(Channel)和緩衝區(Bu
新手入門 配置Always On 故障轉移群集例項
1. 搭建WSFC 1.1.1. 部署環境準備 準備3臺虛擬機器,總體概況如下,後續詳細介紹配置過程 1.1.1. WindowsServer AD搭建和配置 修改機器名稱 1.1.2.
Qt5.9.2+VS2017入門例項——透徹解析
前言: 由於現在書上介紹的大部分都是Qt Creator,並沒有介紹Qt+VS的教程,雖然說很相似,但是也有很多地方不同,對於初學者特別是那些槽和訊號的連線非常的亂,而且幾種檔案也傻傻分不清,這個例項就帶你理清Qt+VS的創作過程,保證你可以舉一反三,會用一些
2.SpringBoot入門教程之整合slf4j日誌配置
SpringBoot入門教程之整合slf4j日誌配置 Java日誌框架眾多,常用的有java.util.logging, log4j, logback,commons-logging等等。個人比較偏好的是slf4j,同時也比較偏好使用字尾為.propertie
elasticsearch入門指南(一)elasticsearch-5.5.2安裝、配置和啟動
一,安裝JDK 略二,安裝elasticsearch1,下載安裝包官網下載地址:https://www.elastic.co/cn/downloads/elasticsearch,本文centos作業系統下安裝elasticsearch的tar包為例,講述安裝過程2,新
nginx初入門之請求轉發配置
專案現狀: 1、使用技術:springboot +springcloud +eureka分散式專案 ; 2、專案型別:分散式專案(殼子工程(web專案)、註冊中心(jar專案)、服務工程(Java專案,可直接通過命令執行)); 3、將專案部署到伺服器,並使
ElasticSearch應用入門系列 1.2 JDK安裝配置
因為ES是依賴java的所以需要JDK,關於ES版本對應的JDK版本請看 https://www.elastic.co/support/matrix#matrix_jvm ~~第一個小坑: 官網說 ES6.3支援java10,我最開始在 win10 安裝
mybatis學習(2)——入門例項
在上一篇部落格中,我們已經把所有的準備工作做好了,包括資料庫和mybatis下載等,接下我們進入一個實際的案例,來理解mybatis是如何工作的。 1、新建專案 這裡使用的軟體是IDEA,這個無關緊要,我們首先建立一個Java專案,工程最後的結構如下所示,我們將先前的my
webpack4.2開發環境入門配置
webpack4.x開發環境配置 寫這篇文章的初衷在於,當我們使用npm安裝webpack時,若不指定webpack的版本,將預設安裝最新版,筆者測試時預設安裝的是4.26.1,並不能照搬老教程的方法。為此,筆者進行了最新版配置的探索,使用的是windows作業系統,如果你的是webpa
SSM框架(Spring Spring MVC Mybatis)基礎入門學習2——Spring入門例項
上次學習了servlet的基礎知識還記得麼,先來回顧一下吧:講了servlet的訪問流程,配置方法,以及原理。今天我們來學習spring的入門例項,分為3部分來學習。 1.Spring的基本知識:IoC(控制反轉)和DI(依賴注入),AOP(面向切面的程式設計) 2.Spr
DB2入門(2)——資料庫、例項、儲存模型
DB2的資料庫、例項的概念 一個DB2例項可以同時管理多個數據庫(DataBase)。 MySQL資料庫:物理作業系統檔案或其他形式檔案型別的集合。在 MySQL 資料庫中,資料檔案就是我們才學習的frm,MYD,MYI,ibd 結尾的檔案。 MySQL例
ASP.NET身份驗證機制membership入門——配置篇(2)
在所有的基本配置都完畢後,我們還需要配置哪些目錄允許被匿名訪問,哪些是需要使用者登入後允許訪問的頁面。 首先:我們在專案中建立一個admin資料夾,在admin資料夾中新增一個web.config檔案,然後在其中的<system.web>節點下面新增如下程