• 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);
            }
        }
  • 相关阅读:
    读《疯狂Ajax讲义》重点
    Qt Library 链接库
    html验证码
    java开发webservice
    QT TCP/IP
    Android 开发技术流程
    jquery使用
    多台服务之间共享Session
    JS 混淆加密
    html中的表格 bootstrap-table
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4868067.html
Copyright © 2020-2023  润新知