Hibernate 作為 Java 持久化領域的經典框架,其 3.3.2 版本引入了對註解的完整支援,極大地簡化了映射配置。本文將手把手帶你完成開發環境搭建、實體類編寫、映射配置以及測試驗證的全流程,助你快速上手 Hibernate 核心開發。
slf4j-nop-1.5.8.jar 靜默輸出建立一個標準 Java 專案,將以下 JAR 加入建構路徑:
hibernate3.jar(核心包)lib/required 目錄下所有 JARslf4j-nop-1.5.8.jar
在 MySQL 中建立名為 hibernate 的資料庫,並執行以下 SQL 建立測試表:
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
建立 com.fengpeng.model.Student 類,採用標準 JavaBean 規範:
public class Student {
private int id;
private String name;
private int age;
// Getter / Setter 方法省略
}
雖然使用註解版,但傳統 XML 映射仍具參考價值:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.fengpeng.model">
<class name="Student">
<id name="id"></id>
<property name="name"></property>
<property name="age"></property>
</class>
</hibernate-mapping>
此文件配置資料庫連線、方言、連線池及映射資源:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"https://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">rootroot</property>
<property name="connection.pool_size">2</property>
<!-- SQL 方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 關閉二級快取 -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- 顯示 SQL -->
<property name="show_sql">true</property>
<!-- 映射文件 -->
<mapping resource="com/fengpeng/model/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
編寫測試類 Test,執行保存操作:
public class Test {
public static void main(String[] args) {
Session session = new Configuration()
.configure()
.buildSessionFactory()
.openSession();
Student student = new Student();
student.setId(2);
student.setName("wang");
student.setAge(2);
session.save(student);
session.beginTransaction().commit();
session.close();
}
}
控制檯輸出:
Hibernate: insert into Student (name, age, id) values (?, ?, ?)
表示資料已成功插入資料表。至此,Hibernate 3.3.2 註解版基礎環境搭建與首個持久化操作完成。