60
技術社區[雲棲]
第十章 基於Annotation的關係映射 前期準備
1、使用MyEclipse生成基於Annotation的實體類與映射
這個過程隻和第三章所說的的內容基本相同。這是其中有兩個地方得注意的。
注意一:
在通過MyEclipse給項目增加Hibernate功能的時候。我們必須勾上Enable Hibernate Annotations Support。否則在通過MyEclipse生成基於Annotation的實體類時會無法使用這項功能。

注意二:
通過MyEclipse生成實體類和映射的時候,應該選第二項生成基於Annotation的實體類,而不是之前的帶.hbm.xml映射文件的實體類。

2、一個簡單的Annotation的實體類
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; /** * @Entity 表示下麵的這個User是一個實體類 * @Table 表示映射到數據表中的表名,其中的name參數表示"表名稱" * @Id 表示主鍵Id,一般放在getXXX前麵 */ @Entity @Table(name = "user", catalog = "hibernate") public class User implements java.io.Serializable { private Integer id; private String username; public User() { } @Id @GeneratedValue @Column(name = "id", unique = true, nullable = false) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name = "username", nullable = false, length = 45) public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } }
3、Annotation的ID生成策略
使用@GeneratedValue(strategy=GenerationType)注解可以定義該標識符的生成策略
Strategy有四個值:
AUTO- 可以是identitycolumn類型,或者sequence類型或者table類型,取決於不同的底層數據庫.
相當於native
TABLE- 使用表保存id值
原理:就是在數據庫中建立一個表,這個表包含兩個字段,一個字段表示名稱,另一個字段表示值。每次在添加數據時,使用第一個字段的名稱,來取值作為添加數據的ID,然後再給這個值累加一個值再次存入數據庫,以便下次取出使用。
IDENTITY- identity column
SEQUENCE- sequence
注意:auto是默認值,也就是說沒有後麵的參數則表示為auto
4、hibernate.cfg.xml中配置Annotation的實體類
如果是通過MyEclipse生成的實體類的話,這個配置是由工具自動加載到配置文件中的。
<mapping />
5、AnnotationConfiguration
Annotation方式。在初始化Configuation時,應使用AnnoationConfiguration。這隻是用於Application或才測試的時候。如果是Web項目我們還有其它的做法,如整合Spring來使用Spring提供的工具類來調用Hibernate的Api會更加方便。這個我們在說Spring的時候會說到。
Configuration cfg = new AnnotationConfiguration(); cfg.configure(); SessionFactory sessionFactory = cfg.buildSessionFactory();
最後更新:2017-04-03 18:52:11