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)
