Hibernate 配置文件属性之 级联操作cascade 性能优化inverse

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.sasa.domain">
        <class name="Category" table="category">
            <id name="id" column="id">
                <generator class="native"></generator>
            </id>
            <property name="c_name"></property>
            <property name="descr"></property>
            <property name="create_tm"></property>
            <!--
            name属性:集合属性名
            column属性: 外键列名
            class属性: 与我关联的对象完整类名
         -->
         <!--
             级联操作:    cascade
                 save-update: 级联保存更新
                 delete:级联删除
                 all:save-update+delete
             级联操作: 简化操作.目的就是为了少些两行代码.
          -->
          <!-- inverse属性: 配置关系是否维护.
                  true: customer不维护关系
                  false(默认值): customer维护关系

              inverse属性: 性能优化.提高关系维护的性能.
              原则: 无论怎么放弃,总有一方必须要维护关系.
              一对多关系中: 一的一方放弃.也只能一的一方放弃.多的一方不能放弃.
          -->
            <set name="products" cascade="save-update" inverse="true">
                <key column="category_id"></key>
                <one-to-many class="Product"/>
            </set>
        </class>
    </hibernate-mapping>
    
@Test
    //新增类别和产品
    public void addCategorysCascade(){
        Session session = HibernateUtils.getCurrentSession();
        Transaction tran = session.beginTransaction();
    //========================================
        Category category = new Category();
        category.setC_name("电子产品");
        category.setDescr("电子产品1");

        Product p1 = new Product();
        p1.setPname("手机");
        p1.setPrice(100.00);

        Product p2 = new Product();
        p2.setPname("电子手表");
        p2.setPrice(90.00);

        //一对多
        category.getProducts().add(p1);
        category.getProducts().add(p2);

        //多对一
        p1.setCategory(category);
        p2.setCategory(category);

        session.save(category);

    //==========================================
        tran.commit();
        session.close();

    }

原文地址:https://www.cnblogs.com/SasaL/p/11671077.html

时间: 2024-10-12 10:08:53

Hibernate 配置文件属性之 级联操作cascade 性能优化inverse的相关文章

Hibernate配置文件属性和开奖网源码搭建

Hibernate配置文件属性和开奖网源码搭建核心配置文件常见配置属性企 娥:217 1793 408属性 描述hibernate.connection.driver_class 指定数据库的驱动类hibernate.connection.url 指定数据库的URLhibernate.connection.username 指定数据库的用户名hibernate.connection.password 指定数据库的密码hibernate.dialect 指定数据库的方言类hibernate.sho

DOM操作的性能优化

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } span.s1 { font: 12.0px Helvetica } DOM操作的真正问题在于 每次操作都会出发布局的改变.DOM树的修改和渲染. React解决了大面积的DOM操作的性能问题,实现了一个虚拟DOM,即virtual DOM,这个我们一条条讲. 所以关于DOM操作的性能优化主要包括: 1.查找元素的优化

高频Dom操作,页面性能优化(学习)

1.1 DOM操作对页面的影响 通过js操作DOM的代价很高,影响页面性能的主要问题有如下几点: 访问和修改DOM元素 修改DOM元素的样式,导致重绘或重排 通过对DOM元素的事件处理,完成与用户的交互功能 DOM的修改会导致重绘和重排. 重绘是指一些样式的修改,元素的位置和大小都没有改变: 重排是指元素的位置或尺寸发生了变化,浏览器需要重新计算渲染树,而新的渲染树建立后,浏览器会重新绘制受影响的元素. 页面重绘的速度要比页面重排的速度快,在页面交互中要尽量避免页面的重排操作.浏览器不会在js执

hibernate单向一对多级联操作

主类  User     单方 从类  UserIp  多方要求结果:操作USER类,自动添加USERIP并维护关联关系 为了节省篇幅,忽略了get/set方法 请自行添加 User类代码: public class User { /**用户的ID*/    private long id; /**登录用户名*/    private String username;        /**登录密码*/    private String password; /**IP集合*/    privat

Cassandra操作和性能优化

1.     Cassandra操作 本文档操作都是在单数据中心,Vnode上操作 1.1.   添加节点到集群中 1.1.1.     添加非seed单节点 1.在新节点上安装Cassandra,但不要启动 2.修改cassandra.yaml文件: cluster_name – 新节点加入集群名称 listen_address/rpc_address – 新节点IP seed_provider – 集群seeds列表 3.启动新节点Cassandra 4.使用nodetool status验

Attribute操作的性能优化方式

Attribute是.NET平台上提供的一种元编程能力,可以通过标记的方式来修饰各种成员.无论是组件设计,语言之间互通,还是最普通的框架使用,现在已经都离不开Attribute了.迫于Attribute的功能的重要性(Kent Beck认为NUnit比早期JUnit设计的好,一个主要方面便是利用了Attribute),Java语言也在5.0版本中引入了与Attribute类似的Annotation概念.不过Attribute说到底也是一种反射操作,平时正常使用不会带来问题,但是密集的调用还是对性

dom与js操作的性能优化

频繁地对于DOM进行操作的很是损耗性能,为什么访问DOM对性能有影响?那是因为两个独立的部分通过他们各自的接口来连接就会带来性能损耗.打个比喻,把DOM看成一个岛屿,把Javascript看成另外一个岛屿,两者之间以一座要收费的桥连接,每次Javascript访问DOM都需要过桥,交一次桥费.来回多了费用自然就高了.所以我们得想方设法减少过桥的次数.访问DOM元素的代价就是交一次“桥费”,修改DOM元素则会导致浏览器重新计算页面的几何变化.如果是循环修改DOM元素,其代价可想而知.

关于DOM的操作以及性能优化问题-重绘重排

写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScript)各自想象为一个岛屿,它们之间用收费桥梁连接,ECMAScript每次访问DOM,都要途径这座桥,并交纳"过桥费",访问DOM的次数越多,费用也就越高.因此,推荐的做法是尽量减少过桥的次数,努力待在ECMAScript岛上.我们不可能不用DOM的接口,那么,怎样才能提高程序的效率? 既然

【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作

这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn.itcast.hibernate.domain; public class Employee { private int id; private String name; private Department depart; public int getId() { return id; } pu