天天看點

Hibernate5.x Eclipse搭建

今天寫一個簡單的hibernate架構搭建流程

首先準備好我們的jar包,這裡附上一個jar包連結

hibernate下載下傳 下載下傳完jar後建立一個簡單的java工程,結構如下
Hibernate5.x Eclipse搭建

項目結構

接下來編寫我們的hibernate的配置檔案

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 該聲明可以到org/hibernate/hibernate-configuration-3.0.dtd檢視-->
<!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:///hibernate</property>
        <!-- 連結資料庫的使用者名 -->
        <property name="hibernate.connection.user">root</property>
        <!-- 密碼 -->
        <property name="hibernate.connection.password">root</property>
        <!-- 是否顯示SQL語句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 連結的編碼 -->
        <property name="connection.characterEncoding">utf8</property>
        <!-- hibernate使用的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 映射檔案 -->
        <mapping resource="com/education/bean/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>
           

下面列舉一些常用的屬性以及一些常用的方言設定

屬性名 作用
hibernate.dialect 為所選資料庫使用其SQL
hibernate.connection.driver_class JDBC驅動
hibernate.connection.url 連結位址
hibernate.connection.pool_size 連接配接池的數量
hibernate.connection.autocommint 自動送出模式

方言設定(可以在

org/hibernate/dialect

中找到)

資料庫 屬性
SQL Server 2000 org.hibernate.dialect.SQLServerDialect
SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDialect
Oracle org.hibernate.dialect.OracleDialect

建立一個簡單的User類,定義了三個屬性以及他們的

get/set

方法

package com.education.bean;

public class User {
    
    private int id;
    
    private String name;
    
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", password=" + password
                + "]";
    }

    
}

           

我們要做的是将資料庫的表與實體類相連接配接,是以需要建立一個映射檔案,映射檔案的命名方式為

className.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 可以在org/hibernate/hibernate-mapping-3.0.dtd中找到 -->
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<!-- 指明為哪個包下的,如果此處的package沒有指明,則下面的class中需要全名 -->   
<hibernate-mapping package="com.eduask.bean">
    <!-- 規定該類對應哪張表 -->
    <class name="User" table="user">
        <!-- 主鍵使用id标簽,name為屬性名與column列名相對應 -->
        <id name="id" type="int" column="id">
            <!-- 主鍵增長設定 -->
            <generator class="native"></generator>
        </id>
    <!-- 其餘屬性映射 type是java類型與資料庫類型的對應設定 -->
    <property name="name" type="string" column="username"/>
    <property name="password" type="string" column="passwd"></property>     
    </class>

</hibernate-mapping>
           

附上自增長類型表與對應類型表

生産器 說明
increment 從資料庫取出主鍵的最大值,然後遞增1
identity 使用資料庫的自增長政策
sequence 隻能在支援序列的資料中使用,如oracle
native 由hibernate根據資料庫自動選擇

identity/hilo/sequence

中的任意一種
assigned 在外部生成,在save前必須指定一個
java類型 映射類型 sql類型
int/Integer integer
long/Long long bigint
short/Short short samllint
byte/Byte byte tinyint
float/Float float
double/Double double
String string varchar
boolean/Boolean true/false char(1)('T'/'F')
Date date
Date/Time time
Date/Timestamp timestamp
Clob clob
Blob blob

最後編寫一個測試類來測試一下我們的hibernate架構是否搭建成功

package com.education.controller;

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

import com.education.bean.User;

public class IndexController {

    public static void main(String[] args) {
        
        //configuration  主配置類   負責讀取hibernate運作的底層資訊
        //sessionFactory 會話工廠   充當資料源,負責建立session對象
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        //session         會話     應用程式與資料庫的一次互動,包含了一般的CURD方法
        Session session = sessionFactory.openSession();
        //執行個體化出一個對象
        User user = new User();
        user.setName("隔壁老王");
        user.setPassword("123123");
        //使用事務管理
        Transaction transcation = session.getTransaction();
        //開始事務
        transcation.begin();
        //此時資料不會真的儲存到資料庫中
        session.save(user);
        //送出事務後,資料才會真正的儲存到資料庫中
        transcation.commit();
    }
}

           

控制台已經将sql語句答應出來了

Hibernate5.x Eclipse搭建

sql語句

最後看一下資料庫中是否添加成功

Hibernate5.x Eclipse搭建

資料庫.jpg

到此為止,hibernate的架構搭建完畢。