在hibernate中,component是某個實體的邏輯組成部分,它與實體的根本區別是沒有oid, component可以成為是值對象(DDD)
采用component映射的好處:它實現了對象模型的細粒度劃分,層次會更分明,復用率會更高。 例子:一個用戶類,包含比較多的用戶信息,姓名、地址、電子郵件、郵編、電話等等,因此這樣如果只集中一個POJO類的話,就造成對象模型的力度比較粗,因此有必要重新劃分對象粒度,提供程序運行效率。 因此把User劃分為User和Contact兩個類 1、User的POJO類 public class User { private int id; private String name; private Contact contact; //省略setter、getter方法 } 2、從User中劃分出來的Contact類 public class Contact { private String email; private String address; private String zipCode; private String contactTel; //省略setter、getter方法 } 3、User的映射文件User.hbm.xml
4、數據庫表結構: mysql> desc t_user; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | email | varchar(255) | YES | | NULL | | | address | varchar(255) | YES | | NULL | | | zipCode | varchar(255) | YES | | NULL | | | contactTel | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 6 rows in set (0.02 sec)