今天寫一個簡單的hibernate架構搭建流程
首先準備好我們的jar包,這裡附上一個jar包連結
hibernate下載下傳 下載下傳完jar後建立一個簡單的java工程,結構如下項目結構
接下來編寫我們的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根據資料庫自動選擇 中的任意一種 |
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語句答應出來了
sql語句
最後看一下資料庫中是否添加成功
資料庫.jpg
到此為止,hibernate的架構搭建完畢。