1. 程式人生 > >hibernate5(2)初入門配置例項

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>節點下面新增如下程