`
p_3er
  • 浏览: 58181 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

第十章 基于Annotation的关系映射 多对一与一对多

 
阅读更多

如果下面部分内容有不明白的可以查找:

基于Annotation的关系映射 前期准备:http://blog.csdn.net/p_3er/article/details/9061911

基于xml的多对一:http://blog.csdn.net/p_3er/article/details/9036759

基于xml的一对多:http://blog.csdn.net/p_3er/article/details/9036921


本文是把多对一与一对多结合起来了,形成一个双向的映射。如果只想要单向的话,把别外一边的注解去掉就是了。


Department:
@Entity
@Table(name = "department", catalog = "hibernate")
public class Department implements java.io.Serializable {
	private Integer id;
	private String name;
	private Set<Employee> employees = new HashSet<Employee>(0);

	public Department() {
	}

	public Department(String name, Set<Employee> employees) {
		this.name = name;
		this.employees = employees;
	}

	@Id
	@GeneratedValue
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

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

	@Column(name = "name", nullable = false, length = 45)
	public String getName() {
		return this.name;
	}

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

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "department")
/*
一对多。
department和employee的一对多关系中,当指定department中的mappedBy后,关系只能被employee来主动维护.也就是employee级联的处理department.
         之前的映射文件:
         <set name="employees" inverse="false" cascade="all">
			<key column="department_id"></key>
			<one-to-many class="cn.framelife.hibernate.entity.Employee"/>
		</set>

*/
	public Set<Employee> getEmployees() {
		return this.employees;
	}

	public void setEmployees(Set<Employee> employees) {
		this.employees = employees;
	}
}

Employee:
@Entity
@Table(name = "employee", catalog = "hibernate")
public class Employee implements java.io.Serializable {
	private Integer id;
	private Department department;
	private String name;
	public Employee() {
	}

	@Id
	@GeneratedValue
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

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

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "department_id")
/*
	多对一。
     <many-to-one name="department" column="department_id"></many-to-one>
*/
	public Department getDepartment() {
		return this.department;
	}

	public void setDepartment(Department department) {
		this.department = department;
	}

	@Column(name = "name", nullable = false, length = 45)
	public String getName() {
		return this.name;
	}

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




分享到:
评论

相关推荐

    Hibernate一对多、一对一、多对多映射之Annotation篇.doc

    本文主要探讨了使用Hibernate Annotation实现的一对多、一对一和多对多映射关系。 一、一对多/多对一映射 在一对多关系中,一个实体(一方)可以与多个其他实体(多方)相关联。在Hibernate中,我们通过`@...

    Hibernate_Annotation关联映射

    对于一对多的双向映射,如果要一对多这一端维护关联关系,你需要删除mappedBy元素并将多对一这端的@JoinColoumn的insertable和updatabel设置为false。这种方案不会得到什么明显的优化,而且还会增加一些附加的UPDATE...

    基于annotation 的ssh整合(1)

    接下来,你可以继续构建其他实体类,定义它们之间的关联,如一对多、多对一、一对一等关系,通过注解如`@OneToMany`、`@ManyToOne`和`@OneToOne`等。同时,你需要配置Spring以处理数据访问,可以使用`@Autowired`...

    Hibernate Annotation 基于外键的一对多双向关联

    在Java的持久化框架Hibernate中,注解是用于对象关系映射(ORM)的一种强大工具,它可以将数据库的表结构与Java类直接关联起来。本文将深入探讨如何使用Hibernate注解实现基于外键的一对多双向关联。我们将通过具体...

    compass annotation关联关系

    Compass Annotation 是 Compass 提供的一种基于 Java 注解(Annotation)的映射方式,它可以将 Java 对象的属性与搜索引擎的文档字段关联起来。通过在 Java 类或其属性上添加特定的注解,Compass 可以自动处理对象到...

    Hibernate annotation JPA 一对多,多对多

    在本主题中,我们将深入探讨使用Hibernate注解来实现JPA的一对多、多对多和多对一的关系映射。 1. **一对多关系**: 在现实世界中,一个老师可以教多个学生,或者一个班级可以包含多个学生,这就是典型的一对多...

    Hibernate Annotation 基于外键的单向多对一关联

    总结起来,Hibernate Annotation提供了一种直观、方便的方式来实现对象关系映射,包括基于外键的多对一关联。通过在Java类上添加特定的注解,我们可以让Hibernate自动管理数据的持久化,从而简化开发工作。在实践中...

    Hibernate关联关系的CRUD和集合映射(annotation)

    集合映射是处理一对多或多对多关联关系的重要手段。常见的集合类型有`List`、`Set`、`Map`等。通过以下注解可以进行配置: 1. **@ElementCollection**:用于非关联的简单元素集合,如字符串列表或枚举集。 2. **@...

    基于annotation的aop实现

    基于Annotation的AOP实现是Spring框架的一个重要特性,它极大地简化了AOP的使用。在本篇文章中,我们将深入探讨基于Annotation的AOP实现,特别是动态代理的理念。 首先,了解什么是AOP。AOP的核心概念是“切面”...

    Hibernate Annotation 基于连接表的单向一对多关联

    标题中的“基于连接表的单向一对多关联”指的是在一对多关联中,通过一个额外的连接表来维护两个表之间的关系。这种关联方式通常用于两个实体之间没有直接的外键关联,而是通过第三个表来建立联系。 具体实现步骤...

    精通Java Web整合开发(第2版)

    12.4.5 多对一单向关联的annotation注解实现538 12.4.6 一对多双向关联的annotation注解实现540 12.4.7 一对多双向自身关联的annotation注解实现542 12.4.8 多对多单向关联的annotation注解实现543 12.4.9 多对多...

    基于Annotation的Servlet配置

    这篇博文"基于Annotation的Servlet配置"探讨了如何使用注解来配置Servlet,让我们深入理解这一现代Web应用开发中的重要概念。 首先,我们来看`@WebServlet`注解。这个注解是Java Servlet API的一部分,可以直接在...

    Hibernate继承映射(annotation)

    - 要注意处理多对一或一对多的关系,因为这些关系可能需要额外的外键约束。 综上所述,Hibernate的单表继承映射是实现对象模型与数据库模型映射的一种有效方法。它简化了数据库设计,但需要根据具体项目需求权衡...

    S2SH整合基于annotation

    **Hibernate3** 是一个对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。在Hibernate中,实体类和数据库表之间建立映射,而Annotation则可以用于定义这些映射,例如`@Entity`表示一个数据库表...

    Hibernate1对多1对1多对多关联映射例子源码含注解配置

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...

    Hibernate一对多(多对一)双向关联(annotation/xml)

    在Java的持久化框架Hibernate中,一对多(Many-to-One)和多对一(One-to-Many)的关系映射是数据库关系模型中的常见关联类型。本文将深入探讨这两种关联方式在使用Hibernate时的配置,包括基于注解(Annotation)和...

    基于Annotation的MVC框架SSH示例.rar

    在这个"基于Annotation的MVC框架SSH示例"中,我们将探讨如何使用注解(Annotation)来简化SSH框架的配置和实现。 1. **Spring框架**:Spring是核心容器,负责管理应用对象的生命周期和依赖注入。在传统的Spring配置...

    基于Annotation的Java单元测试框架.pdf

    本文主要介绍了基于Annotation的Java单元测试框架,讨论了Annotation在Java EE中的应用、反射技术的使用和JUnit单元测试框架的结合,建立了一个自动化单元测试框架结构。 一、Annotation概述 Annotation是Java 5中...

    详解 Spring 3.0 基于 Annotation 的依赖注入实现

    在 Spring 框架中,依赖注入(Dependency Injection,简称 DI)是一种重要的设计模式,它允许对象之间的依赖关系在运行时动态地注入,从而降低了组件之间的耦合度。Spring 3.0 开始引入了基于 Annotation 的依赖注入...

Global site tag (gtag.js) - Google Analytics