11 映射-- 组件映射(人类与姓名类)
?
User类:?? 注意他的name属性
package dao.po;/** * User类 (组件映射一例) * * user表要保存 User类 与 Name类 的信息 * * Name类, 他不会单独保存再一张表中,没有Name.hbm.xml */public class User{private intid;private Namename;//是Name类型, 他不会单独保存再一张表中,没有Name.hbm.xmlprivate Stringemail;}?
package dao.po;/** * * Name类 (组件映射一例) * * 他不是po, 不会单独保存再一张表中,没有Name.hbm.xml * */public class Name{private StringfristName;private Stringlastname;}?
User.hbm.xml:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="dao.po"><class name="User"><id name="id"><generator /><!-- 组件映射 --><component name="name"><property name="fristName" column="frist_name"/><property name="lastname" column="last_name"/></component></class></hibernate-mapping>
?
保存操作:
package dao;import org.hibernate.Session;import org.hibernate.Transaction;import dao.po.Name;import dao.po.User;/** * 组件映射一例 * */public class Component{public static void main(final String[] args){add();}public static void add(){final Name name = new Name();name.setFristName("周");name.setLastname("星驰");final User u = new User();u.setEmail("email@gmail.com");u.setName(name); //建立关联Session session = null;try{session = HibernateUtil.getSeesion();final Transaction tx = session.beginTransaction();session.save(u);tx.commit();}finally{if (session != null){session.close();}}}}?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
1 楼 TTLtry 2009-03-26 问一下,对于那个Name类,是不是在数据库中还要键一个表与之对应? 2 楼 elf8848 2009-03-26 引用问一下,对于那个Name类,是不是在数据库中还要键一个表与之对应?User 与 Name 两个类 , 共用一张表 3 楼 darrendu 2009-09-29 组件映射是对象模型的细粒度划分,方便复用
Name是个值对象,不会单独建立表的