mappedBy和JoinColumn实质上指向的是同一个表即外键作为主键所在的表对应的实体

本文详细解释了在Java Hibernate框架中mappedBy与JoinColumn的区别及应用。通过具体例子说明了单向与双向关联的区别,以及mappedBy如何实现双向关联。

只有双向的时候使用mappedBy


mappedBy和JoinColumn实质上指向的是同一个表即外键作为主键所在的表对应的实体(其对应对象1)

mappedBy对应实体的声明对象1

JoinColumn对应的是对象1的主键


比如:

花朵类{

花朵类名 (主键)

        玫瑰花类  对象2

      

     

       get玫瑰花类

 @onetoone(mappdeBy"对象1")

}


玫瑰花类{

玫瑰花名字

        玫瑰花颜色

        花朵类别   对象1

 @joincolumn(name="对象1的主键")

       

}

@Entity(name="DFSSTUDENT")
@Table(name="DFSSTUDENT")
@SuppressWarnings("serial")
public class Dfsstudent implements Serializable {
	private String dfsstudentname;
	
	private Dfsclass dfc;

	/**
	 * @return the dfsstudentname
	 */
	@Id
	@Column(name="DFSSTUDENTNAME")
	public String getDfsstudentname() {
		return dfsstudentname;
	}

	/**
	 * @param dfsstudentname the dfsstudentname to set
	 */
	public void setDfsstudentname(String dfsstudentname) {
		this.dfsstudentname = dfsstudentname;
	}

	/**
	 * @return the dfc
	 */
	@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
	@JoinColumn(name="dfsclassname")
	public Dfsclass getDfc() {
		return dfc;
	}

	/**
	 * @param dfc the dfc to set
	 */
	public void setDfc(Dfsclass dfc) {
		this.dfc = dfc;
	}
	
	

}


@Entity(name="DFSCLASS")
@Table(name="DFSCLASS")
@SuppressWarnings("serial")
public class Dfsclass implements Serializable {
	private String dfsclassname;
	
	private Dfsstudent dfst;

	/**
	 * @return the dfsclassname
	 */
	@Id
	@Column(name="DFSCLASSNAME")
	public String getDfsclassname() {
		return dfsclassname;
	}

	/**
	 * @param dfsclassname the dfsclassname to set
	 */
	public void setDfsclassname(String dfsclassname) {
		this.dfsclassname = dfsclassname;
	}

	/**
	 * @return the dfst
	 */
	@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dfc")
	public Dfsstudent getDfst() {
		return dfst;
	}

	/**
	 * @param dfst the dfst to set
	 */
	public void setDfst(Dfsstudent dfst) {
		this.dfst = dfst;
	}
	
	

}

+20160628-加点料+

我最近也看了这个,呵呵 我谈谈我的看法,你看能不能这样理解
比如说:Person和IdCard,在IdCard里面用mappedBy.
     如果没有mappedBy,两边都加OneToOne的话,两边都以对方的主键作为外键。这样冗余大了点。
    单向的时候,可以通过Person找到IdCard。双向的时候也可以通过IdCard找到Person.
    加了mappedBy的话,只在Person里面加了外键。我们在IdCard类里有一个Person属性,当get或load一个IdCard的时候,hibernate看到了你在这个OneToOne里面加了一个mappedBy,所以会去Person类对应的表里去找一个外键与你要get的IdCard的主键相同的记录,放到IdCard的person属性中。这样也就能更具IdCard来找到Peorson了,也就实现了所谓的双向关联。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值