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);
            }
        }
  • 相关阅读:
    Jsp的内置标签和jstl标签
    Jsp中的EL表达式
    JSP和servlet结合案例
    Jsp:内置对象和四种域对象的理解
    编码实战Web端联系人的增删改查
    Session案例
    Cookie案例分析
    会话数据的保存——cookie
    ServletContext和ServletConfig
    Servlet(1)
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4868067.html
Copyright © 2011-2022 走看看