zoukankan      html  css  js  c++  java
  • 多对多拆成两个 多对一

    hibernate给我们提供了太多的方便,其中之一就是对于关系的映射非常的方便,hibernate的映射分为两大类,一类是注释映射,一类是我们常用的配置文件映射。如果想了解更多,请参考http://www.esnsc.com/news244.html(hibernate的映射)

    今天就谈谈使用多对多的感想。

    多对多的用处有很多,比如专题和文章,这是常用的新闻系统。一个专题下有很多文章,同样一个文章可以属于多个专题,那么这就是多对多,

    但是如果我们使用hibernate的多对多的话,会出现两个严重的问题:

    1)多对多基于中间表,那么中间表是无法操作的。你无法查询出该专题下的所有文章来,因为你无法对集合分页。

    2)采用中间表,中间表无法操作。你无法给这个中间表中加任何多余的但是你常用的业务属性。因为不是一个实体类。

    所以,基于以上两点缺点,我们往往将多对多改成两个一对多,这样就相当于将中间表也拿出一个实体类了,你不但可以分页,也可以加任何你想要加的其他业务属性。

    但是注意,在加其他业务属性的时候,一定要注意适可而止。以为你一旦使用了中间表为实体类,那么你就必须在操作两端的时候都切忌要操作中间表这个实体类,比如你在中间实体类中加入了一个新闻标题这个属性(为什么要加这个业务属性,因为在查询中间表的时候,不想要级联,最好就将常用的属性,查询所有list的时候常用的属性都放进去,这样你就不用进行级联了),那么你在修改了这个新闻的时候,必须记得将该中间实体类的有关记录进行修改。

    但是由于在平时操作中,查询是经常的,而增加删除修改相对于查询是少的多,所以为了不级联操作而增加适当的业务属性是可用的。

  • 相关阅读:
    SYBASE 日志空间满了的几种情况
    命令行对jar包的解压和压缩
    SYBASE 常用 sp_configure
    SYBASE 删除数据库
    【转】从RGB色转为灰度色算法
    C# 指针操作图像 细化处理
    C# 指针操作图像 二值化处理
    C# 对象转换为byte[] ,byte[]还原对象
    javascript 简单加解密
    windows 2003 企业版 下载地址+序列号
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/3937744.html
Copyright © 2011-2022 走看看