zoukankan      html  css  js  c++  java
  • 8、one2many 双向

    one2many双向

    1、配置文件的写法

        1.1 在1的一方的hbm.xml的配置

    <!-- 使用了lazy=extra之后会稍微智能一些,会根据去的值的不同来判断是调用count和获取投影 -->
            <set name="stus" lazy="extra" inverse="true">
                <key column="cid" />  <!-- key用来指定在对方的外键的名称 -->
                <one-to-many class="Student" />  <!-- class用来设置列表中的对象类型 -->
            </set>

        1.2在n的一方的hbm.xml的配置

        <!-- many-to-one 用来映射多对一, name表示属性中的名称, column用来表示外键的名称 -->
            <many-to-one name="classroom" column="cid" />

    2、关于one2many的提高效率的技巧

        2.1 ------- 不让1的一方来维护关系,inverse="true"

        2.2 ------  通过lazy=extra,来提高select语句的效率

        2.3 ------  通过先添加1的一方,再添加n的一方,来减少sql语句,提高效率

            

    public void testAdd01() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                session.beginTransaction();
                // 先添加1
                Classroom c = new Classroom();
                c.setGrade(2012);
                c.setName("计算机网络技术");
    
                // 在添加n
                Student stu1 = new Student();
                stu1.setName("猪八戒");
                stu1.setNo("001");
                stu1.setClassroom(c);
    
                Student stu2 = new Student();
                stu2.setName("孙悟空");
                stu2.setNo("002");
                stu2.setClassroom(c);
    
                // 设置关联关系
                c.getStus().add(stu1);
                c.getStus().add(stu2);
                stu1.setClassroom(c);
                stu2.setClassroom(c);
                
    
                // 保存
                session.save(c);
                session.save(stu1);
                session.save(stu2);
                
    
                session.getTransaction().commit();
            } catch (Exception e) {
                e.printStackTrace();
                if (session != null)
                    session.getTransaction().rollback();
            } finally {
                HibernateUtil.close(session);
            }
        }
  • 相关阅读:
    SQL中ISNULL的用法
    将日期类型转换成年月日的形式
    使用jQuery获取GridView的数据行的数量
    GridView数据源绑定的一个小问题
    less中混合
    封装(模块化)
    css实现一个缺口小三角
    淘宝的css初始化代码
    div+css制作表格
    浮动元素水平居中
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4868067.html
Copyright © 2011-2022 走看看