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

本文介绍Hibernate框架下组件映射的使用方法,通过User类和Name类的具体实例演示了如何在一个表中保存复合属性,包括配置文件User.hbm.xml的内容及相应的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值