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

Hibernate 連接 MySQL 完整範例:配置、映射、CRUD 操作

     編輯:Java 相關知識

Hibernate 3.x 時代經典配置範例:hibernate.cfg.xml、.hbm.xml 映射檔、POJO 實體類、Session 操作範本。

資料表結構


CREATE TABLE test (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(100) NOT NULL
);

1. hibernate.cfg.xml


<?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="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://192.168.25.152/test</property>
        <property name="connection.username">your_user</property>
        <property name="connection.password">your_pass</property>
        <mapping resource="user.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

2. user.hbm.xml 映射檔


<?xml version='1.0' encoding='UTF-8'?>
<!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.TestDb" table="test">
        <id name="id" column="id">
            <generator class="increment"/>
        </id>
        <property name="username" column="username"/>
    </class>
</hibernate-mapping>

3. 實體類 TestDb.java


package com;
public class TestDb {
    private Long id;
    private String username;
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
}

4. CRUD 操作範本 Test.java


package com;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import java.util.List;

public class Test {
    static SessionFactory sf;
    static Session session;
    static Transaction tx;

    static void init() {
        sf = new Configuration().configure().buildSessionFactory();
        session = sf.openSession();
        tx = session.beginTransaction();
    }
    static void close() {
        tx.commit();
        session.close();
        sf.close();
    }

    public static void main(String[] args) {
        init();
        // insert();
        // update();
        // load();
        all();
        close();
    }

    static void all() {
        Query q = session.createQuery("select c.id, c.username from TestDb c");
        List list = q.list();
        for (Object row : list) {
            Object[] cols = (Object[]) row;
            System.out.println(cols[0] + " " + cols[1]);
        }
    }

    static void load() {
        TestDb obj = (TestDb) session.load(TestDb.class, 2L);
        System.out.println(obj.getUsername());
    }

    static void update() {
        TestDb obj = (TestDb) session.load(TestDb.class, 2L);
        obj.setUsername("cg");
    }

    static void insert() {
        TestDb user = new TestDb();
        user.setUsername("sb");
        session.save(user);
    }
}

專案結構

src/
├── com/
│   ├── TestDb.java
│   ├── Test.java
│   ├── user.hbm.xml
└── hibernate.cfg.xml

現代化遷移建議

  • Hibernate 5/6:Configuration → MetadataSources、StandardServiceRegistryBuilder
  • 映射:註解 (@Entity, @Table, @Id) 替代 .hbm.xml
  • Session 管理:Spring HibernateTemplate / SessionFactory 注入
  • ID 生成:GenerationType.IDENTITY (MySQL) 替代 increment
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved