首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Hibernate 連接 MySQL 並自動建表完整教學

     編輯:Java 綜合教學

環境準備

  1. 建立 Java Project,配置 JDK。
  2. 建立 lib 目錄放入:
    • Hibernate 核心 JAR(含 hibernate-core、hibernate-commons-annotations 等)
    • MySQL Connector/J JDBC 驅動
    • JUnit 測試包
  3. 專案右鍵 → Properties → Java Build Path → Add JARs 導入上述 JAR。

配置檔案建立

1. hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "https://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://localhost:3306/hibernate?useSSL=false</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123456</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property> <!-- 自動建表/更新 -->
    <mapping resource="com/alanlee/entity/Student.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

2. 實體類

package com.alanlee.entity;
import java.util.Date;

public class Student {
    private Integer sid;
    private String name;
    private String sex;
    private Date birthday;
    private String address;
    // getter/setter 略
}

3. 映射檔 Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "https://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.alanlee.entity.Student" table="STUDENT">
    <id name="sid" type="java.lang.Integer">
      <column name="SID"/>
      <generator class="increment"/> <!-- 主鍵生成策略 -->
    </id>
    <property name="name" column="NAME"/>
    <property name="sex" column="SEX"/>
    <property name="birthday" column="BIRTHDAY"/>
    <property name="address" column="ADDRESS"/>
  </class>
</hibernate-mapping>

關鍵配置說明

屬性說明常用值
hbm2ddl.autoDDL 自動策略create、update、validate、create-drop
show_sql控制台印出 SQLtrue/false
generator class主鍵生成器increment、identity、native、uuid、assigned

主鍵生成策略坑點

  • increment:Hibernate 內存計數,單例安全,多實例會重複。
  • identity:依賴資料庫自增,需表定義 AUTO_INCREMENT。
  • assigned:由程式指定 ID,若資料庫同時設自增會衝突(Duplicate entry)。
  • 建議:開發用 increment 或 identity;生產用 native 或 uuid。

JUnit 測試

@Before
public void setUp() {
    Configuration config = new Configuration().configure();
    ServiceRegistry sr = new StandardServiceRegistryBuilder()
            .applySettings(config.getProperties()).build();
    sessionFactory = config.buildSessionFactory(sr);
    session = sessionFactory.openSession();
    transaction = session.beginTransaction();
}

@Test
public void testSaveStudent() {
    Student s = new Student();
    s.setSid(1); s.setName("AlanLee"); s.setSex("男");
    s.setBirthday(new Date()); s.setAddress("湖南郴州");
    session.save(s);
}

@After
public void tearDown() {
    transaction.commit();
    session.close();
    sessionFactory.close();
}

驗證結果

JUnit 綠燈

資料庫自動建表

資料庫中出現 STUDENT 表並寫入一筆資料,代表整合成功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved