`
lihengzkj
  • 浏览: 45152 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JPA初探04---一对一的双向关联

 
阅读更多
关系:
公民  ---  身份证 
一对一的关系

数据库设计


create table t_citizen (
	cid int primary key,
	cname varchar,
	cardid int
);

create table t_card(
	cid int primary key,
	cardno varchar(45)
);

【Java类设计】

package oneToOne;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
 * 
 * @author 青山
 * @date 2014年10月19日
 * @file name: Citizen.java
 * 
 * 注意:我们决定公民是关系的维护方,那么外键的字段就这公民一方
 */
@Entity
@Table(name="t_citizen")
public class Citizen {
	@Id
	@Column(name="cid")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int wid;
	
	@Column(name="cname")
	private String name;
	
	@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,optional=true)
	//optional这里为true,表示有公民不一定一定会有身份证;optional英文意思:是否是可选项
	@JoinColumn(name="cardid")//指定外键使用JoinColumn
	private Card card;
	
	public int getWid() {
		return wid;
	}

	public void setWid(int wid) {
		this.wid = wid;
	}

	public String getName() {
		return name;
	}

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

	public Card getCard() {
		return card;
	}

	public void setCard(Card card) {
		this.card = card;
	}
	
}

===========================================================
package oneToOne;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
 * 身份证类
 * @author 青山
 * @date 2014年10月19日
 * @file name: Card.java
 * 
 * 注意: 这是关系的被维护方法
 */
@Entity
@Table(name="t_card")
public class Card {
	@Id
	@Column(name="cid")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int hid;
	
	
	private String cardno;
	//mappedBy一出现在一对一的关系中就是关系的被维护方法,mappedBy的值是对方哪一个属性维护这个关系
	@OneToOne(mappedBy="card",fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},
			optional=false)
	//optional为false表示有了身份证一定要有一个公民对应,即有了关系的被维护方一定要有关系的维护方
	//配偶的编号
	private Citizen citizen;
	
	
	
	public int getHid() {
		return hid;
	}
	public void setHid(int hid) {
		this.hid = hid;
	}
	
	public String getCardno() {
		return cardno;
	}
	public void setCardno(String cardno) {
		this.cardno = cardno;
	}
	public Citizen getCitizen() {
		return citizen;
	}
	public void setCitizen(Citizen citizen) {
		this.citizen = citizen;
	}

}
===========================================================

package oneToOne;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import util.JPAManagerFactory;

public class OneToOneTest {
	public static void main(String[] args) {
		EntityManager manager = JPAManagerFactory.getMFInstance().getManager();
		EntityTransaction t = manager.getTransaction();
		t.begin();
		
		
//		Card card = new Card();
//		card.setCardno("69364376247382");
//		Citizen w = new Citizen();
//		w.setName("张上哪疯");
//		w.setCard(card);
//		manager.persist(w);
		
//		Card car = manager.find(Card.class, 1);
//		System.out.println(car.getCardno());
//		System.out.println(car.getCitizen().getName());
		
		Card car = new Card();
		car.setCardno("234324321111");
		manager.persist(car);
		
//		Card car = manager.find(Card.class, 2);
//		Citizen c = manager.find(Citizen.class, 1);
//		c.setCard(car);
		
		t.commit();
		manager.close();
	}
}

 

分享到:
评论

相关推荐

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    `hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用

    hibernate-jpa-2.0-api-1.0.0-CR-1.jar

    java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题

    hibernate-jpa-2.1-api-1.0.2.Final.jar

    java运行依赖jar包

    hibernate-jpa-2.0-api-1.0.1.Final-sources

    总之,深入研究"hibernate-jpa-2.0-api-1.0.1.Final-sources"源码不仅可以增强我们对JPA规范的理解,也能帮助我们在实际开发中更好地利用Hibernate,提高代码质量和项目效率。通过分析源码,我们可以找到优化点,...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...

    JPA学习笔记-EJB-04JPA关联映射总结

    本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将数据库中的表关系映射到Java对象的关联上。在Hibernate中,这些关系通常通过XML配置文件来定义,而在JPA...

    JPA中的一对一双向关联

    在Java Persistence API (JPA) 中,一对一双向关联是一种关系映射,它允许两个实体类之间存在一对一的关系,并且每个实体都能引用对方。这种关联是双向的,意味着每个实体都可以通过自己的属性访问到另一个实体。...

    hibernate-jpa-2.1-api 1.0.0.Final API

    **标题详解:** "hibernate-jpa-2.1-api 1.0.0.Final API" 这个标题指的是Hibernate对Java Persistence API (JPA) 2.1规范的实现,版本为1.0.0.Final。Hibernate是Java领域中最受欢迎的对象关系映射(ORM)框架之一...

    querydsl-jpa-codegen-3.3.3.zip

    综上所述,"querydsl-jpa-codegen-3.3.3.zip" 为Java开发者带来了高效、类型的JPA查询解决方案,而"JBugmenot.zip"则提供了一种便捷的匿名登录机制。这两个开源项目展示了Java社区的创新精神和对开发效率的追求。...

    springboot-jpa-activiti-bootstrap-master

    本项目"springboot-jpa-activiti-bootstrap-master"正是一个将这三个技术进行深度整合的实例,旨在帮助开发者理解并掌握它们之间的协同工作方式。 首先,SpringBoot是Spring框架的一种轻量级实现,它简化了设置和...

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

    2. **一对多(OneToMany)**: 一个实体可以与多个其他实体相关联,如一个班级有多个学生。使用`@OneToMany`注解,可以设置`fetch`策略(默认为`LAZY`,表示延迟加载)和`cascade`属性(如`CascadeType.ALL`,表示...

Global site tag (gtag.js) - Google Analytics