11 映射-- 组件映射(人类与姓名类)

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 protected]");
		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();
			}
		}
	}
}

你可能感兴趣的:(组件)