ssh_ch06:hibernate外键对应设置

本文详细介绍了Hibernate框架下多对一、一对多、双向一对多及多对多的ORM映射配置方法,并通过具体实例展示了如何实现这些配置。

A. 多对一

a.1 新建Web project---many2one

image

a.2 添加hibernate支持

image

image

image

a.3 先进入DB Browser配置表中“一”的那一方。

image

image

image

image

a.4 配置“多”的那一方,其它的一样,最后一步:打倒数第二个勾。

image

a.5 建立一个测试类测试一下。

package com.yenange.dao;
import org.hibernate.Session;
import com.yenange.entity.JD;

public class JDDao {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
JD jd=(JD)session.get(JD.class, 2);
System.out.println(jd.getJd());
System.out.println(jd.getTblQx().getQx());
}
}

至此,全部完成。

总结:其实很简单。1、把“一”按最普通的方式反转;2、把“多”按普通方式反转,最后一步倒数第二个勾上就好。


B. 一对多

b1. 新建项目

image

b2. 添加hibernate支持

image

添加过程与“一对多”相同,都是指定了一个util包,不再赘述。添加后的项目如下:

image

b3. 把“多”先按最普通的方式建好。

image

image

image

b4. “一”前面基本上是普通的,仅最后一步,最下面的勾打上就好了。

image

b5. 做一个测试类试一下.

package com.yenange.dao;
import java.util.Set;
import org.hibernate.Session;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class Test {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
QX qx=(QX)session.get(QX.class, 1);
System.out.println(qx.getQx());
Set<JD> set=qx.getTblJds();
System.out.println("总数:"+set.size());
for (JD jd : set) {
System.out.println(jd.getJd());
}
}
}

至此,全部完成。

总结:其实很简单。1、把“多”按最普通的方式反转;2、把“一”按普通方式反转,最后一步倒数第一个勾上就好。


C. 双向一对多

c1. 建立项目,添加hibernate支持

image

c2. 反转配置: 选中两个表

image

c3. 最后一步。最下面的两个勾要打上。两个表分别配一下,仅Class name不同而已。

image

c4. 复制一个BaseHibernateDAO类过来。项目情况:

image

新建一个区县的DAO

image

c5. 做一个测试类:

package com.yenange.dao;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class QXDAO extends BaseHibernateDAO {
public static void main(String[] args) {
QX qx=new QX();
qx.setQx("海珠区");
QXDAO dao=new QXDAO();
dao.add(qx);
QX qx2=(QX)dao.get(QX.class, 22);
JD jd=new JD();
jd.setJd("新港西路");
jd.setTblQx(qx2);
dao.add(jd);
}
}

c6. 对于删除等可能涉及到外键的:

1、区县(“一”)的那一方的映射文件:

<set name="tblJds" inverse="true" cascade="all">

2. 测试文件添加代码:

dao.delete(QX.class, 22);//成功!!


D 多对多

d1. 创建项目

image

d2. 选中两张表, 进行反转

image

image

image

image

说实在的,感觉最后一个应该是Hibernate比代码生成器更强大的地方,可惜没有讲完。有空再研究吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值