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