zoukankan      html  css  js  c++  java
  • 初学Hibernate杂乱总结

    1.如果在"one"方中(如部门)写有Set属性,但是没有在映射文件中配置,那么,在获取指定部门下的所有员工时,不会报错,但是,Set内的元素个数为0。输出为"[]"。

    2.在映射文件里配置<many-to-one  />标签时(写在many方),同时也配置了本实体类的该外键属性。
    要设置的属性与其他一般的<property ></property>相比 -- 都有name、column属性,
    但用class属性代替了type属性,且class属性值是本实体类要引用的另一实体类的类名。

    3.在映射文件里配置<set name="属性名"></set>标签时(写在one方),同时也配置了本实体类的该 Set类型的属性。
    其下有两个子标签,<key column="many方的外键列名"/>  (表示根据员工表中的部门ID得到相应的Set集合)和<one-to-many class="包名.many的一方类名" />

    4.在映射文件里,标签的column属性或column标签的name属性,的值,都是指表的列名。
      在映射文件里,除了column标签的name属性,大多数标签的name属性值都是指实体类的属性名。

    5.类似于foreach的集合元素遍历
      for(类型 临时变量名 :  集合或数组)
      {

      }

    6.<set>标签的两个重要属性:
    1) inverse属性,用于标识双向关联中的被动方一端。(默认为false)
           非反向端用于把内存中的表示保存到数据库中。
    例1:在一对多关系中,若其值为true,那么,当通过部门来删除一个员工时( <set>的cascade属性值为all),即department.getEmployees().remove(employee); 执行后员工表中该员工的departmentId 列的值将改为NULL。
           若设置其值为false,那么执行后该员工信息将没有任何改变。        
       
    2) cascade属性,用于设置双方如何进行级联。可取值:
       all:当任何一方的数据发生改变时,另一方也发生改变。
       save-update:只在添加数据或修改数据时才对另一方产生影响。
       delete:只在删除数据时才对另一方产生影响。
       none:互不影响。

    例1:若其值为all或delete,当删除某个部门时,员工表中所有属于该部门的员工将全部被删除。
         反之若没有级联删除,员工表中所有属于该部门的员工的departmentId列(外键)的值将被修改为NULL。
      

    7.VO --Value Object 指不包含逻辑代码的值对象(如实体类)

    8.在one方定义inverse="true"不会影响级联操作。


  • 相关阅读:
    java中的静态变量,静态方法与静态代码块详解
    增删改查简单的sql语句
    Java中的输入流与输出流
    Java向mysql中插入时间的方法
    java中Statement 对象
    request和session获取参数的区别
    Session 详解
    Java中静态变量与非静态变量的区别
    MYSQL基础操作之数据约束与关联查询
    MYSQL基础操作之单表的增删改查
  • 原文地址:https://www.cnblogs.com/xcxcxcxc/p/5541234.html
Copyright © 2011-2022 走看看