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

    ORM配置的定義,除了用XML文件以外,還可使用註解的方式。使用XML的優勢是若是配置有變動,在僅更改配置的狀況下,不須要從新編譯(做爲數據庫表的映射類,除了表字段類型變動以外,不修改數據類的場景應該很是少了),缺點是同時存在數據類和配置文件,若是有變動可能須要同時改兩個地方,容易遺漏。而使用註解的方式,能夠將XML的配置文件去掉,必定程度上減小維護成本html

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

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

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

首先,從新編寫數據類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" />session

<?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配置方式同樣的結果app

相關文章
相關標籤/搜索