User类: 注意他的name属性
package dao.po;
/**
* User类 (组件映射一例)
*
* user表要保存 User类 与 Name类 的信息
*
* Name类, 他不会单独保存再一张表中,没有Name.hbm.xml
*/
public class User
{
private int id;
private Name name; //是Name类型, 他不会单独保存再一张表中,没有Name.hbm.xml
private String email;
}
package dao.po;
/**
*
* Name类 (组件映射一例)
*
* 他不是po, 不会单独保存再一张表中,没有Name.hbm.xml
*
*/
public class Name
{
private String fristName;
private String lastname;
}
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 class="native"/> </id> <property name="email" /> <!-- 组件映射 --> <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();
}
}
}
}