第九章 关系映射 组件关联映射

组件是针对同一张表中的字段进行映射,作用是将字段多的一张表分成多个实体类来表示。

如:name与user

user表中有first_name及last_name。在实体类中,自定义一个Name类来表示first_name与last_name;

Name实体类:

package cn.framelife.mvc.entity;

public class Name {
	private String firstName;
	private String lastName;

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

}

User实体类:

package cn.framelife.mvc.entity;

import java.io.Serializable;

public class User implements Serializable {
	private Integer id;
	private Name name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Name getName() {
		return name;
	}

	public void setName(Name name) {
		this.name = name;
	}
}

User.hbm.xml:

<hibernate-mapping>
    <class name="cn.framelife.hibernate.entity.User" table="user" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <component name="name" class="cn.framelife.hibernate.entity.Name">
        	<property name="firstName" column="first_name"></property>
        	<property name="lastName" column="last_name"></property>
        </component>
    </class>
</hibernate-mapping>

增加操作:

tx = session.beginTransaction();
			Name name = new Name();
			name.setFirstName("111");
			name.setLastName("2222");

			User user = new User();
			user.setName(name);
			session.save(user);

			tx.commit();
时间: 2024-08-04 12:45:38

第九章 关系映射 组件关联映射的相关文章

第九章 关系映射 一对多关联映射

如:department与employee employee中有一个department_id的外键 Department: public class Department implements Serializable { private Integer id; private String name; private Set<Employee> employees; public Set<Employee> getEmployees() { return employees;

第九章 关系映射 集合关联映射

基本上所有集合关联映射都是在一对多,多对多操作的时候使用. 1.set 我们之前在做一对多操作的时候,多的一方就是一个set. 一对多的例子:http://blog.csdn.net/p_3er/article/details/9036921 实体类中: private Set<Employee> employees; 对应的映射文件: <set name="employees" inverse="false" cascade="all&

第九章 关系映射 一对一关系 唯一外键方式实现一对一

如:person与idCard 基于外键的one-to-one可以描述为多对一.   hibernate 一对一唯一外键关联映射(双向关联 Person<---->IdCard )           一对一唯一外键 双向 关联,需要在另一端(person ),添加 <one-to-one> 标签,指示 hibernate 如何加载 其关联对象,默认根据主键加载idcard ,外键关联映射中,因为两个实体采用的是 idcard 的外键维护的关系, 所以不能指定主键加载 idcard

第九章 关系映射 多对一关联映射

如:department与employee employee中有一个department_id的外键 Department: public class Department implements Serializable { private Integer id; private String name; public Department() { } public Integer getId() { return id; } public void setId(Integer id) { th

第九章 关系映射 多对多关联映射

表设计: 有一张中间表,中间表中有两张关联表的外键 如:student与teacher Student: package cn.framelife.mvc.entity; import java.util.Set; public class Student { private Integer id; private String name; private Set<Teacher> teachers; public Integer getId() { return id; } public v

第九章 关系映射 继承关联映射

1.discriminator鉴别器 同一张表中表示不同的类型 在employee表中定义一个type字段,表示员工的类型 name是所有的员工都有的属性. sale_count是销售员特有的属性. 而skiller是技术人员特有的属性. 三个实体类: Employee: package cn.framelife.mvc.entity; import java.io.Serializable; public class Employee implements Serializable { pri

第九章 关系映射 说明

这里的关系是指:对象之间的关系,并不是指数据库的关系,-----红色重要        存在以下关系: 1.    一对一 2.    一对多 3.    多对一 4.    多对多 5.    集合映射 u  List u  Set u  Map 6.    继承关系(不重要) 7.     组件映射

第九章 关系映射 .hbm.xml简单写法与解释

<?xml version="1.0" encoding="utf-8"?> <!-- 上面是xml文件的版本与编码 --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&qu

Android开发艺术探索——第九章:四大组件的工作过程(上)

本篇幅要讲讲四大组件,这也是我们再熟悉不过的,分别是Activity,Service,BroadcastReceiver,ContentProvider,怎么使用我们这里就不多赘述了,我们本篇主要是讲他们的执行流程和工作原理,也让我们更加的了解他们,所以本章的侧重点在于四大组件的工作过程分析,通过分析他们的工作过程我们可以更好的理解系统内部运行机制,这也有助于我们对系统有一个更加深入的了解. 一.四大组件的运行状态 四大组件当中,除了广播,其余三者都需要在清单文件中注册,对于BroadcastR