zoukankan      html  css  js  c++  java
  • 7、one2many单向

    one2many单向

    1  1的一方的hbm.xml文件的配置

       

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.baowei.entity">
        <class name="Classroom" table="classroom">
            <id name="id">
                <generator class="native" />
            </id>
            <property name="name" />
            <property name="grade" />
    
            <!-- 使用了lazy=extra之后会稍微智能一些,会根据去的值的不同来判断是调用count和获取投影 -->
            <set name="stus" lazy="extra">
                <key column="mid" />  <!-- key用来指定在对方的外键的名称 -->
                <one-to-many class="Student" />  <!-- class用来设置列表中的对象类型 -->
            </set>
    
        </class>
    </hibernate-mapping>

    2 关于one2many的测试代码

    2.1 测试Add,会发出五条sql,三条插入,两条更新

         

    public void testAdd01() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                session.beginTransaction();
    
                Student stu1 = new Student();
                stu1.setName("猪八戒");
                stu1.setNo("001");
    
                Student stu2 = new Student();
                stu2.setName("孙悟空");
                stu2.setNo("002");
                session.save(stu2);
    
                session.save(stu1);
                session.save(stu2);
    
                Classroom c = new Classroom();
                c.setGrade(2012);
                c.setName("计算机网络技术");
                // //设置关联关系
                c.getStus().add(stu1);
                c.getStus().add(stu2);
                session.save(c);
                // 此时会发出5条sql,三条查询,两条更新
    
                session.getTransaction().commit();
            } catch (Exception e) {
                e.printStackTrace();
                if (session != null)
                    session.getTransaction().rollback();
            } finally {
                // HibernateUtil.close(session);
            }
        }

    2.2 测试懒加载-----再用到的时候才回去发出sql语句

    2.3 关于lazy=extra,会智能的用一些sql语句去查询,如果输出的是int类型,会去select count(*)

        

    public void testAdd02() {
            Session session = null;
            try {
                session = HibernateUtil.openSession();
                session.beginTransaction();
    
                Classroom c = (Classroom) session.load(Classroom.class, 1);
                System.out.println(c.getStus().size()); 
                //如果使用了 lazy=extra,sql语句会进行一些优化
                session.getTransaction().commit();
            } catch (Exception e) {
                e.printStackTrace();
                if (session != null)
                    session.getTransaction().rollback();
            } finally {
                HibernateUtil.close(session);
            }
        }

    2.4

  • 相关阅读:
    Unity HOME
    Unity Document
    css3动画的性能优化_针对移动端卡顿问题
    前端工程师分享几个CSS技巧
    什么是前端? web1.0、web2.0时代的网页制作,前端开发都有哪些内容等
    前端工程之CDN部署_前端为什么非要动静分离?说一下CDN托管的意义
    JSON API免费接口_ 免费的天气预报、地图、IP、手机信息查询、翻译、新闻等api接口
    利用伪元素:before和:after插入图标
    CSS中的三大特性_继承性、层叠性、优先级
    WEB专用服务器的安全设置的实战技巧----IIS设置
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4867963.html
Copyright © 2011-2022 走看看