用HIBERNATE开发的项目,可不可以不建立主外键的关系,所有的表都是独立的,而在程序中用事务来保证数据
的完整性?请大家指点

解决方案 »

  1.   

    如果表间的主外键的关系都交给事务来管理的话,那麽HIBERNATE还有什麽优势呢?
      

  2.   

    是不是HIBERNATE的项目都要建立表的主外键关联,而不是将这种关联交由事务来处理呢?请大家帮忙解答
      

  3.   

    可以通过hibernate来配置多表之间的主外键之间的关系的
      

  4.   

    我只知道一点是可以的,就是两张不存在主外键关系的表,可以采用隐式查询来连接两张表的数据.
     例如: select ....  from A a , B b where a.id=b=id但至于通过事务管理来取代主外键的设置,个人认为不可取
      

  5.   

    为什麽在HIBERNATE项目里,用事务来取代主外键关系来保证数据的完整性不好呢?
    很多数据库的表都没有设置外键,而是在程序中自己控制的呀。:(
      

  6.   

    但外键会影响效率,有时还会造成死锁。
    如果在HIBERNATE里不建外键的话,xml配置文件要简单得多,我个人觉得维护起来会方便些。
    至于后期维护时只要看一眼程序就会明白主外键的关联关系,而且项目都会有文档来参考。
      

  7.   

    配置文件是少了很多 one to many  many to one 等关系映射
    全部单表  事务控制 可以是可以 还是感觉怪怪的 嘿嘿
    不过这样的话 HIBERNATE里提供的很多APIS 都不好用了
    关联操作都要通过手动去完成
    而且这样的库表本身设计感觉就不是很合理
    其实你的问题不是HIBERNATE的问题
    是数据库表设计时 觉得  主外键约束很麻烦 完全不要约束的问题哦
      

  8.   

    很多开源的没有用HIBERNATE的项目的数据库设计都是单表(如:jive),所以我觉得HIBERNATE开发也可以是单表,虽然HIBERNATE提供了很方便主外键的配置方法。
      

  9.   

    呵呵可以是可以用的  只是hql语句 使用的时候  还有级联操作的时候 会稍微复杂点