`

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
3 楼 darrendu 2009-09-29  
组件映射是对象模型的细粒度划分,方便复用
Name是个值对象,不会单独建立表的
2 楼 elf8848 2009-03-26  
引用
问一下,对于那个Name类,是不是在数据库中还要键一个表与之对应?


User 与 Name 两个类 , 共用一张表
1 楼 TTLtry 2009-03-26  
  问一下,对于那个Name类,是不是在数据库中还要键一个表与之对应?

相关推荐

    人类资源管理系统

    这涉及到员工的基本信息录入、更新与查询,如姓名、性别、年龄、职位、入职日期等,以便于企业对员工进行分类、统计和分析。此外,还包括员工的个人信息变动记录,如职务晋升、岗位调动等,确保信息的实时性和准确性...

    自然语言处理,朴树贝叶斯方法,根据姓名预测性别

    自然语言处理(NLP)是计算机科学领域的一个重要分支,主要研究如何使计算机理解、生成和处理人类自然语言。在这个项目中,我们关注的是利用朴树贝叶斯方法来预测一个人的性别,仅仅基于他们的姓名。这种方法是机器...

    含用户界面简单电话簿&#40;java&#41;.doc

    2. **联系人类**:定义一个Contact类,封装联系人的姓名和电话号码等属性,以及相关的方法,如获取、设置信息等。 3. **联系人显示模式**:设计一个界面显示模块,用于呈现联系人信息,可以是列表形式或者其他的...

    DNS 服务器的建立和管理

    域名系统(Domain Name System,简称DNS)是互联网中的关键基础设施之一,它提供了一种将人类易于记忆的域名映射为计算机能够识别的IP地址的服务。在TCP/IP网络环境中,DNS的作用尤为重要,它不仅简化了用户对网络...

    随机点名系统(Delphi编写)

    点击按钮后,系统通过算法从列表中随机选取一个姓名,并可能利用TSpeakermodule之类的语音合成插件将选中的姓名读出来,增加互动性。 随机点名算法通常涉及概率和统计学知识,简单来说,它需要确保每个学生被选中的...

    work tool_20181227(8.52).rar

    例如,可能会有一个人类(Person)的类,包含姓名(Name)、年龄(Age)属性,以及说话(Speak)这样的方法。 泛型是C#中的另一个重要特性,它允许创建可重用的数据结构和算法,而不必指定具体的类型。这在处理集合...

    C#微软培训资料

    15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 结 .213 第十七章 文 件 ...

    Python集中化管理平台Ansible介绍与YAML简介

    YAML (YAML Ain’t Markup Language) 是一种用于人类可读的数据序列化的格式,常用于配置文件中。其特点包括: - **简洁性**:易于编写和阅读。 - **灵活性**:支持复杂的数据结构。 - **广泛支持**:多数编程语言都...

    2021-2022计算机二级等级考试试题及答案No.1984.docx

    1. **查询操作**:在数据库操作中,"选择"(A)是从关系中选取满足特定条件的记录,而"投影"(B)则是从关系中选取指定的列,即查询学生的姓名和班级是投影操作。 2. **Web开发**:在Web应用中,可以通过HTTP请求的...

Global site tag (gtag.js) - Google Analytics