1. 程式人生 > >Hibernate學習筆記(二) --- 使用註解定義ORM配置

Hibernate學習筆記(二) --- 使用註解定義ORM配置

www. 可能 hibernate spa cut 數據 mysq provide 維護成本

ORM配置的定義,除了用XML文件之外,還可以使用註解的方式。使用XML的優點是如果配置有變更,在僅更改配置的情況下,不需要重新編譯(作為數據庫表的映射類,除了表字段類型變更之外,不修改數據類的場景應該非常少了),缺點是同時存在數據類和配置文件,如果有變更可能需要同時改兩個地方,容易遺漏。而使用註解的方式,可以將XML的配置文件去掉,一定程度上減少維護成本

相對於使用XML定義ORM配置,有兩處變更:

  1.在數據類的屬性上通過添加註解的方式完成ORM配置,關於Hibernate註解的詳細說明參見這裏;

  2.在Hibernate的配置文件hibernate.cfg.xml中修改ORM配置的引入;

首先,重新編寫數據類Movie並刪除之前配置好的Movie.hbm.xml:

package study.hibernate.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Type;

/**
 * 電影數據類
 *
 */
@Entity
@Table(name="MOVIE")
public class Movie {
    @Id
    @Column(name="MOVIE_ID")
    private int id;

    @Column(name="NAME")
    @Type(type="string")
    private String name;

    @Column(name="DESCRIPTION")
    @Type(type="text")
    private String description;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
    
}

  接著更改Hibernate配置文件 ,將原來的<mapping resource=“xxx" />更改為<mapping class="xxx" />

<?xml version="1.0" encoding="UTF-8"?>
<!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>
        <!-- 數據庫JDBC配置 -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/MOVIE_DB?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>

        <!-- JDBC數據庫連接池大小 -->
        <property name="connection.pool_size">10</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- 每次啟動的時候,會把表先刪除重新創建 -->
        <property name="hbm2ddl.auto">create</property>

        <!-- 添加了Hibernate註解的數據類全路徑名稱,Hibernate會在整個classpath下查找該文件 -->
        <mapping class="study.hibernate.model.Movie"
/> </session-factory> </hibernate-configuration>

  最後,重新運行程序,可以得到和之前通過XML配置方式一樣的結果

Hibernate學習筆記(二) --- 使用註解定義ORM配置