zoukankan      html  css  js  c++  java
  • hibernate 一对多 单双向关联

    一,单向 n对1关联

        1,在n 端的bean类中加入属性 : private Customer customer;

      2,在 n端的配置文件中配置: <many-to-one name="customer" class="com.m01.n21.Customer" column="CUSTOMER_ID">

      name : n端bean类的属性名; class: 1端Bean类的全名; column: 在n端对应的数据库中 对1端对应数据库 的外键

      注: ,查询n端数据时 默认会赖查询,即只查询本表数据,只有用到1端的数据时,才会再次去查询,同load()方法相似。


    二 ,双向 n对1关联

      1,n端的操作同上。

      2,在1端的Bean类中加入属性 : Set<Order> orders=new HashSet<>();

          . orders 必须初始化,防止空指针异常;声明集合类型时要使用接口类型,因为hibernate在获取集合类型时,返回的是hibernate内置

            的集合类型不是JavaSE的标准集合实现

        在1端的配置文件中配置

          <set name="orders" table="ORDERS" inverse="true" cascade="save-update">
            <key column="CUSTOMER_ID"></key>
            <one-to-many class="com.m01.n21.both.Order"/>
          </set>

          name : n端bean类中的属性; table: 1端对应的数据表名; inverse :设置是否维护关联关系,默认为false 设为true 提高性能

          cascade : 级联操作 有[delete,delete-orpan,save-update];

          column : 在n端对应数据表中的指向n端对应表的 外键;

          class : n端对应bean的全类名;


       在hibernate中 有些类没有对应数据表,且是另一些类的属性,比如自定义的 Content类是Book类的一个属性:

        private Content content;

      那么 在 Book类对应的mapping文件中应这样映射这个content属性

        <component name="content" class="com.m01.bean.Content">
          <parent name="book"/><!-- 可有可無。若有,必须在Content中声明该属性-->
          <property name="page" column="page"/>
          <property name="tests" column="tests"/>
        </component>

        name: Book类中对应的属性; class :对应 该属性的全类名;

        name : Content类中的属性; column : Book类对应数据表中的列名

    补:

      在Java中 Java.util,Date和 java.util.Calendar代表时间和日期;  

      jdbc的API在Java.util,Date扩展了java.sql.Date和Java.sql.Time,java.sql.Timestamp

      分别对应sql类型的 DATE,TIME,TIMESTAMP

  • 相关阅读:
    MySQL读写分离
    Error:(1, 1) java: 非法字符: ‘ufeff’
    Java 集合系列(四)—— ListIterator 源码分析
    Java 集合系列(三)—— LinkedList
    Java 集合系列(二)—— ArrayList
    Java 集合系列(一)
    Docker之进入容器(三)
    Docker之常用命令(二)
    Docker之初识(一)
    Redis可视化工具 Redis Desktop Manager
  • 原文地址:https://www.cnblogs.com/m01qiuping/p/6380140.html
Copyright © 2011-2022 走看看