zoukankan      html  css  js  c++  java
  • IDEA + SSH OA 第一天(项目收获:Hibernate XML)

     

    之前都是用工具逆向生成代码,很少写配置文件,今天试着使用,有几点需要注意


        Cascade(级联):
      Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系。

     Cascade属性的可能值有:

      all: 所有情况下均进行关联操作,即save-update和delete。

      none: 所有情况下均不进行关联操作。这是默认值。

      save-update: 在执行save/update/saveOrUpdate时进行关联操作。

      delete: 在执行delete 时进行关联操作。

      all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。

     inverse(控制方向反转):
         一对多:该属性在多的一方。应该在一方的设置 inverse=true ,多的一方设置 inverse=false(多的一方也可以不设置inverse属性,因为默认值是false),这说明关联关系由多的一方来维护。原因:该关联关系的属性在多的一方的表中,在维护关联关系的时候在多的一方容易维护。
      多对多:属性在独立表中。在任意一方设置inverse=true,另一方inverse=false;原因:如果两个多设置为true 的话,表示两方都对关联关系表(独立表)进行了同样的维护,其实只要一方维护就行了,效率上来说,这样设置是合理点的。
      一对一:其实是一对多的一个特例,inverse 的设置也是一样的,主要还是看关联关系的属性在哪一方,这一方的inverse=false。
      多对一:也就是一对多的反过来,没什么区别。
       

    模板:
        如在同包中 class 可以不写全限定名。(<hibernate-mapping package="包名">)
        
        多对一:column 推荐填写 属性名+Id 如 userId
        一对多:key column 拷贝 多对一 的column
        多对多:key column 本对象名+Id,class 推荐填写 关联对象名 + Id
        
        多对一
            <many-to-one name="属性名" class="对方的类名" column="..."></many-to-one>
            在表中:column 内所装的内容,只可能是 class 中对方表的 Id 值,并且在表中会创建 column 列;
            
        一对多
            <set name="属性名">
                <key column=" 多对一 的column "></key>
                <one-to-many class="关联对象名+Id"/>
            </set>
            name 为类中所使用的字段,表中不会创建列,
            之前在纠结,为什么 key column 需要填写,
                多对一 是为了让子表的 column 字段添加内容时,查找添加内容是否是主表的 Id 之一,也就是确认添加内容是否合法。
                而 一对多 的 key column 是为了在使用中添加内容时,自动在子表 column 加入当前类的 主键。
            
        多对多(肯定会有一张中间表):
            <set name="属性名" table="中间表名">
                <key column="本对象名+Id"></key>
                <many-to-many class="关联对象名+Id" column="在表中对应的列名"></many-to-many>
            </set>
            中间表名推荐使用 两表结合名 如:user_department ;

    以上为个人理解,如有错误请通知我,谢谢

  • 相关阅读:
    PHP打开错误提示和关闭错误提示的方法
    squid的简单介绍
    伪静态与重定向--RewriteRule
    PHP操作Redis常用技巧总结
    爱漂泊人生 30个php操作redis常用方法代码例子
    Mysql与Redis的同步实践
    Linux 命令之grep
    Linux 命令之sed
    Linux shell 计算两个文件的并集、交集、差集
    Linux 软链接的创建、删除和更新
  • 原文地址:https://www.cnblogs.com/bpfdxhn/p/7476525.html
Copyright © 2011-2022 走看看