Hibernate组件(Component)照射
Hibernate组件(Component)映射?package egpublic class User {private int idprivate Name name//Name
Hibernate组件(Component)映射
?

package eg;public class User {private int id;private Name name;//Name是另一个类private Date birthday; //setter和getter方法省略}?Name类如下:
?

package eg;public class Name { private String firstName; private String lastName; //省略setter和getter方法}?User.hbm.xml映射文件如下:
?

?测试类如下:
?

public class TestUser {@Testpublic void test1(){Configuration config = new Configuration();config.configure();SessionFactory factory = config.buildSessionFactory();Session session = factory.openSession();Transaction tran = session.beginTransaction();User user = new User();Name name = new Name();name.setFirstName("long");name.setLastName("xiao");user.setName(name);user.setBirthday(new Date());session.save(user);tran.commit();session.close();}}?测试程序运行后,数据库中生成了user表,创建语句如下:
?

DROP TABLE IF EXISTS `test`.`user`;CREATE TABLE `test`.`user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) DEFAULT NULL, `last_name` varchar(255) DEFAULT NULL, `birthday` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;?数据库中记录如下所示:
+----+------------+-----------+----------+
| id | first_name | last_name | birthday |
+----+------------+-----------+----------+
|? 1 | long?????? | xiao????? | NULL???? |
+----+------------+-----------+----------+
1 row in set (0.00 sec)