Hibernate many to many

用Hibernate来处理一些对象及其相互关系,使用得当的话,往往能让设计和实现简单、明了。 这里记录了一种多对多的实方式。

 

 

Hibernate是用于java的开源的对象/关系映射工具,她让我们对数据的处理更加抽象和简单。

 

这里假设一个CustChanl 可以属于多个CustChanlGrp, 一个CustChanlGrp可以包含多个CustChanl,即他们是many-to-many的关系。并且使用struts2、hibernate、spring。

1. 数据模型

 

WWMD_CUST_CHANL

Column Name

Key

Nulls

Format

Length

Definition / Comments

CUST_CHANL_ID

PK

No

VARCHAR2

15

Customer/Channel ID

CUST_CHANL

 

No

VARCHAR2

100

Customer/Channel Name

 

WWMD_CUST_CHANL_GRP

Column Name

Key

Nulls

Format

Length

Definition / Comments

CUST_CHANL_GRP_ID

PK

No

VARCHAR2

15

Customer/Channel group ID

CUST_CHANL_GRP

 

No

VARCHAR2

100

Customer/Channel group name

 

WWMD_CUST_CHANL_MAP

Column Name

Key

Nulls

Format

Length

Definition / Comments

CUST_CHANL_GRP_ID

PK

No

VARCHAR2

15

Customer/Channel group ID referencing WWMD_CUST_CHANL_GRP

CUST_CHANL_ID

PK

No

VARCHAR2

15

Customer/Channel ID referencing WWMD_CUST_CHANL

 

2.持久层对象(POJO)

 

CustChanl ------对应实体表

  

 

 

CustChanlMap  ---对应关系表

 

 

 

 

 

 

3. 映射文件(数据表和java对象的桥梁)

CustChanl.hbm.xml

CustChanlGrp.hbm.xml

 CustChanlMap.hbm.xml

 

4.分别创建CustChanl和CustChanlGrp的DAO的实现类和接口(略),实现对数据库的操作。

CustChanlDaoImpl

 

CustChanlGrpDaoImpl

 

5.设置Hibernate SessionFactory

 

6.spring容器中,定义好相应的Dao

custChanlGrpDao and custChanlDao

 

7. Dao在业务层的定义(定义要直接设为null,不能使用new的方式,并且要定义好相应的get和set方法,dao有spring容器管理)

 

8. 使用,Action继承该base类,直接调用定义好了的dao就行了。

 

9. 总结

在设计CustChanl对象的时候,添加一个Set类型的属性用来存放他所属的group,配置好hbm文件,这样在对CustChanl对象操作时,他与他所属的group的关系会有hibernate自动维护,这里把对象的关系转换成了对象的一个属性进行操作,并且有有hibernate自动维护;CustChanlGrp对象也同理。

 

 

CustChanlGrp ----------对应实体表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值