zoukankan      html  css  js  c++  java
  • 020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性

    <one-to-one>、<many-to-one>单端关联上,可以取值:false/proxy/noproxy(false/代理/不代理)

    实例一:所有lazy属性默认(支持懒加载)

                session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //不发出SQL语句,支持lazy(懒加载)

                User user = (User) session.load(User.class, 3);

                //发出SQL语句,只加载普通属性,集合中的数据不会加载

                System.out.println("user.name=" + user.getName());

               

                //不会发出SQL语句,只返回代理类

                Group group = user.getGroup();

                //发出SQL语句,因为现在真正使用对象

                System.out.println("group.name=" + group.getName());

                tx.commit();

    实例二:将<many-to-one>中的lazy设置为false,其它默认

    session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //不会发出SQL

                User user = (User) session.load(User.class, 3);

                //会发出SQL,发出两条SQL,分别是User和组

                //因为<many-to-one>中的lazy=false,则会加载Group

                System.out.println("user.name=" + user.getName());

               

                //不会发出,已经在上面加载了数据

                Group group = user.getGroup();

                //不会发出,已经在上面加载了数据

                System.out.println("group.name=" + group.getName());

                tx.commit();

    实例三:将<class>中的lazy设置为false,其它默认

                session = HibernateUtils.getSession();

                tx = session.beginTransaction();

     

                //会发出SQL,因为<class>中的lazy=false

                User user = (User) session.load(User.class, 3);

                //不会发出SQL,已经在上面加载了

                System.out.println("user.name=" + user.getName());

               

                //不会发出,因为<class>标签上的lazy只对普通属性的影响

                //<class>标签上的lazy不会影响到单端关联上的lazy特性

                Group group = user.getGroup();

                //会发出,因为开始使用对象

                System.out.println("group.name=" + group.getName());

     

                tx.commit();

  • 相关阅读:
    上机小笔记
    机器人搬重物(BFS)
    排序汇总
    棋盘(BFS)
    权限控制:分配权限1
    asp.net identity 基础概念篇-理解什么是声明
    EntityFramework中几种更改数据的方式
    CodeFirst迁移时出现的中文乱码问题
    javascript Function()
    C#操作数据库(二)【操作SQL Server数据库的常用的类介绍】
  • 原文地址:https://www.cnblogs.com/crazylqy/p/4079505.html
Copyright © 2011-2022 走看看