在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)