`

hibernate多对一(一对多)单向(双向)关系映射

阅读更多

1.hibernate多对一单向关系映射(外键永远会加在多的一方)

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	private Person person;
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	@ManyToOne  //建立多对一联系
	@JoinColumn(name="personid")
	public Person getPerson() {
		return person;
	}
}

 

    create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        personid integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3E07A4B5E (personid), 
        add constraint FK3F397E3E07A4B5E 
        foreign key (personid) 
        references Person (id)

 

2.hibernate一对多单向关系映射(外键永远会加在多的一方)

package yingjun.model;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	private Set<Dream> dream=new HashSet<Dream>();
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@OneToMany
	@JoinColumn(name="personid")//要加这个字段  不然会用多对多的方式生产3张表
	public Set<Dream> getDream() {
		return dream;
	}
	
	public void setDream(Set<Dream> dream) {
		this.dream = dream;
	}

	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}

}

 

create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        personid integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3E07A4B5E (personid), 
        add constraint FK3F397E3E07A4B5E 
        foreign key (personid) 
        references Person (id)

 

3.hibernate多对一(一对多)双向关系映射

package yingjun.model;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	private Set<Dream> dream=new HashSet<Dream>();
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@OneToMany(mappedBy="person") //mappedBy要加在One这方
	public Set<Dream> getDream() {
		return dream;
	}
	
	public void setDream(Set<Dream> dream) {
		this.dream = dream;
	}

	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	private Person person;
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}
	@ManyToOne
	public Person getPerson() {
			return person;
		
	}
	public void setPerson(Person person) {
		this.person = person;
	}

}

 

create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        person_id integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3F8EABE73 (person_id), 
        add constraint FK3F397E3F8EABE73 
        foreign key (person_id) 
        references Person (id)

 

 

分享到:
评论

相关推荐

    Hibernate双向一对一关联映射(注解版)

    在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有另一个实体的引用,而双向一对一映射则意味着两个实体都可以互相引用。这种关联关系在数据库层面通常通过主键外键约束来实现,但...

    hibernate单向多对多映射(XML版)

    总结起来,Hibernate的单向多对多映射通过XML配置文件定义了实体之间的关系,使得在Java代码中处理数据库的多对多关联变得更加简单和直观。理解和熟练掌握这一映射方式,对于提升Java持久层开发的效率和质量至关重要...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    一对多单向和双向映射

    总结,一对多单向和双向映射是ORM框架中处理数据库关系的重要方式,它们各有优缺点,需要根据实际需求和项目规模来选择合适的设计。理解并熟练运用这些映射技术,对于提升Java应用程序的数据操作效率和代码质量具有...

    hibernate一对多,多对一,一对多双向关联

    “Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...

    Hibernate一对一唯一外键关联映射(单向关联)

    Hibernate一对一关联概述 一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一...

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    在本文中,我们将详细介绍Hibernate一对一唯一外键关联映射的概念、配置方法和实践应用。 一对一唯一外键关联映射的概念 在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键...

    Hibernate关于注解的一对多,多对多,一对一

    本篇文章将深入探讨Hibernate中注解的一对多、多对多和一对一关系映射。 ### 一对多关系 在现实生活中,例如一个班级有一个班主任,而班主任可以管理多个学生,这就是典型的“一对多”关系。在Hibernate中,我们...

    Hibernate 关联关系映射分类

    综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...

    Hibernate一对多单向关联映射

    通过以上内容,我们对Hibernate中的一对多单向关联映射有了全面的理解,包括其配置方式、代码实现、使用技巧以及需要注意的细节。在实际项目开发中,正确理解和运用这些知识能够有效地提升数据操作的效率和代码的可...

    hibernate多对多关联映射(单项关联)

    总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...

    hibernate一对多双向

    在探讨“Hibernate一对多双向”这一主题时,我们首先需要理解Hibernate框架以及它在Java开发中的重要性。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库模型相...

    hibernate一对多与多对一

    本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...

Global site tag (gtag.js) - Google Analytics