Hibernate學習筆記(二) --- 使用註解定義ORM配置
阿新 • • 發佈:2017-10-05
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配置