`
jiangduxi
  • 浏览: 456613 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JPA之OneToOne关系处理

阅读更多
在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的关系。之前已经介绍了1对多和多对一的关系。现在来看看1对1.

业务需求:一般情况下,一个人都只有一个身份证号码(特殊情况除外)。

下面给出人和身份证实体类
 import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

@Entity
public class Person {
	private Integer id;
	private String name;
	private IDCard idcard;
	
	public Person(){}
	
	public Person(String name){
		this.name = name;
	}

	@Id @GeneratedValue
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	@Column(length=10,nullable=false)
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@OneToOne(optional=false,cascade={CascadeType.ALL})
	@JoinColumn(name="idcard_id")
	public IDCard getIdcard() {
		return idcard;
	}
	public void setIdcard(IDCard idcard) {
		this.idcard = idcard;
	}
}


import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class IDCard {
	private Integer id;
	private String cardno;
	private Person person;
	
	public IDCard(){}
	
	public IDCard(String cardno) {
		this.cardno = cardno;
	}
this.person = person;
	}
	@Id @GeneratedValue
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	@Column(length=18,nullable=false)
	public String getCardno() {
		return cardno;
	}
	public void setCardno(String cardno) {
		this.cardno = cardno;
	}

	@OneToOne(mappedBy="idcard",cascade={CascadeType.REFRESH,CascadeType.MERGE,CascadeType.REFRESH})
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		
}

测试类
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.BeforeClass;
import org.junit.Test;

import cn.itcast.bean.IDCard;
import cn.itcast.bean.Person;

public class OneToOneTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	@Test public void add(){
		 EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
		 EntityManager em = factory.createEntityManager();
		 em.getTransaction().begin(); // start transaction
		 Person person = new Person("蒋笃淅");
		 person.setIdcard(new IDCard("88888888888"));
		 em.persist(person);
		 em.getTransaction().commit(); //commit transaction
		 em.close();
		 factory.close();
	}
}

总结:1对1其实可以参考1对多进行考虑,它的关系维护端由编写者自己去定义。

分享到:
评论

相关推荐

    JPA映射关系详解javax JPA JPA映射关系 JPA映射

    JPA 提供了一种对象关系映射 (ORM) 方法来处理数据库,允许开发者以面向对象的方式操作数据库。本文将详细介绍 JPA 中四种常见的映射关系:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及...

    JPA学习总结(二)--JPAOneToOne双向关联

    本文主要探讨的是JPA中的`@OneToOne`注解,它用于建立两个实体之间的一对一关联关系。在实际开发中,这种关联关系常常出现在需要精确映射一对一实体映射的情况,例如用户与个人信息、车辆与车牌号等。我们将会深入...

    JPA常用关系实现例子

    在这个“JPA常用关系实现例子”中,我们将探讨四种主要的关系类型:一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。这些关系定义了实体间的关联,有助于在数据库设计中创建...

    JPA 实现继承关系

    JPA提供了三种继承策略来处理继承关系: 1. **单一表继承(Single Table Inheritance,STI)**: 在这种策略下,所有继承类的数据都存储在一个单独的数据库表中。一个额外的字段,通常称为`discriminator column`...

    jpa的实体映射关系7种

    JPA 提供了多种映射关系,使得开发者能够方便地处理不同类型的关联。下面我们将详细探讨标题中提到的七种映射关系: 1. **单向一对一**: 在这种关系中,一个实体只有一个对应实体与之关联,且只在一个方向上有...

    JPA大全之经典全集

    **JPA(Java Persistence API)**是...总之,"JPA大全之经典全集"这个资源集合对于学习和掌握JPA有着重要的价值,无论是初学者还是经验丰富的开发者,都能从中受益,深入理解JPA的各个方面,提升自己的数据库编程能力。

    JPA一对一关系实例配置

    本实例将详细探讨JPA中的一对一(OneToOne)关系配置,以及如何在实际项目中实现。 一对一关系在数据库设计中意味着两个实体之间存在一个实体对应另一个实体的唯一关系。例如,一个人可能只有一个护照,或者一个...

    JPA中文解释,JPA的API

    在JPA中,注解如`@Entity`用于标记实体类,`@Table`指定对应的数据库表,`@Id`定义主键,`@Column`定义字段属性,`@OneToMany`、`@ManyToOne`、`@OneToOne`和`@ManyToMany`处理关联关系等。针对Oracle,可能还会涉及...

    JPA

    标题与描述均提到了“JPA”,这指向的是Java Persistence API(Java持久化API),一个用于Java...通过上述讨论,我们可以看到JPA如何简化了实体之间的关系处理,使得开发者能够更专注于业务逻辑而不是底层数据操作。

    JPA关联关系

    JPA通过中间表(也称为连接表)来处理这种关系,使用@ManyToMany注解,并通过@JoinTable定义连接表的详细信息,包括连接字段和外键引用。 **源码分析** 理解了JPA关联关系的理论后,深入源码可以帮助我们更好地掌握...

    JPA教程,包括TOPLink JPA,Hibernate JPA,Open Jpa,jpa批注

    Hibernate是最早的ORM框架之一,后来成为了JPA的一个实现。Hibernate JPA提供了JPA规范的全部功能,并且在JPA的基础上扩展了一些特性,如更强大的 Criteria 查询、HQL(Hibernate Query Language)等。Hibernate JPA...

    JPA一对一,一对多,多对多关系映射

    在JPA中,关系映射是核心特性之一,它将数据库表之间的关系映射为Java类之间的关系,使数据操作更加直观和方便。本篇将深入探讨JPA中的一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 ...

    实用JPA开发指南----jpa核心技术(关联关系等的配置高级配置)

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中处理持久性的工作。EJB3是Enterprise JavaBeans 3.0版本,其中集成了JPA,使得在企业级应用开发中...

    JPA 标注 JPA标签手册

    - `@OneToOne`:表示一对一关系,每个实例只对应另一个实例。 - `@ManyToMany`:表示多对多关系,一方可以有多个另一方实例,反之亦然。 - `@JoinColumn` 和 `@JoinTable`:定义关联的列或表。 4. **扩展和特殊...

    JPA详细文档(JPA 批注参考)

    Java 持续性API(JPA)是Java EE 5和Enterprise JavaBean(EJB)3.0规范的一部分,其主要目标是简化EJB的持久化操作,并提供了一种对象关系映射(ORM)机制,允许开发者以声明式方式定义Java对象如何映射到关系...

    JPA 黎活明JPA视频代码

    使用`@OneToOne`注解可以定义这种关系,还可以使用`@PrimaryKeyJoinColumn`或`@MapsId`来处理主键共享的情况。 5. **JPAOnetoMany**:这个项目涉及到了JPA中的一对多关联,即一个实体可以与多个其他实体相关联。`@...

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    - **关系映射**:`@ManyToOne`,`@OneToMany`,`@OneToOne`,`@ManyToMany`注解用于处理实体间的关系。 - **复合主键**:`@EmbeddedId`和`@IdClass`用于处理复杂的主键结构。 - **继承映射**:支持单表继承...

    JPA-4 映射关联关系

    JPA 提供了多种方式来处理不同类型的关联关系,包括单向多对一、单向一对多、双向一对一、双向多对一和双向多对多。下面我们将详细探讨这些关联关系的实现方法。 1. **单向多对一关联关系(SingleManyToOne)** 在...

    jpa之使用hibernate示例代码

    在"jpa之使用hibernate示例代码"中,我们可能会涉及以下关键知识点: 1. **实体类(Entity)**:在JPA中,实体类是Java类,代表数据库中的表。它需要使用`@Entity`注解标记,并且通常有一个主键字段,用`@Id`注解...

    jpa的学习---jpa demo工程

    JPA是Java平台上的一个标准,用于处理对象关系映射(ORM),它提供了一种在Java应用中管理和持久化对象的方式,简化了数据库操作。本篇文章将围绕JPA的基础概念、配置、实体类的创建、查询操作以及JPA Demo工程的...

Global site tag (gtag.js) - Google Analytics