• 数据库返回Hibernate中的get和load有何不同?


    发一下牢骚和主题无关:

        http://javarevisited.blogspot.tw/2012/07/hibernate-get-and-load-difference-interview-question.html

        

        

    最大的差别:检索策略不同

        get:

         如果Session缓存中没有相关对象 ,get会立即拜访数据库;返回一个被完整初始化的对象;可能触及多次数据库调用。

        ——session.get()、query.list()总是会停止立即检索,即便已设为应用延迟检索。

        

        load:

        如果Session缓存中没有相关对象,load其实不立即查询数据库,不执行select,仅返回BO的一个代理类实例

        

    • 这个代理类扩展自BO类,由Hibernate在运行时应用CGLIB工具动态产生;
    • 代理类实例仅初始化OID属性,其他属性都是null
    • 第一次拜访BO属性(非ID属性)时,Hibernate会执行select+初始化代理类实例
        每日一道理
    漫漫人生路,谁都难免会遭遇各种失意或厄运。在凄风苦雨 惨雾愁云的考验面前,一个强者,是不会向命运低头的。风再冷,不会永远不息;雾再浓,不会经久不散。风息雾散,仍是阳光灿烂。

        ——若select查不到,则抛ObjectNotFoundException

        ——getId()其实不能触发查询。

        这种延迟初始化可以节省数据库查询,进步性能。

        

        

    当对象找不到时的行为不同

        如果在缓存和数据库中都找不到对象,则:

        get返回null;

        load抛出ObjectNotFoundException。

        

        

    拜访数据库

        get总是拜访数据库;

        load其实不总是拜访数据库。——getId不拜访

        

        

    代理

        get要么返回null,要么返回一个完整初始化的对象;

        load返回proxy。

        

        

    性能

        load性能更高。

        

        

    应用场景

        当想判断实例是否存在时,用get;——因为不存在的话,就会返回null

        当确信实例确定存在时,用load

        

        如果只需拜访对象ID,用load

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

    文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
    硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
    项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
    软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

  • 相关阅读:
    数据结构-循环队列程序演示
    C++进阶:新人易入的那些坑 --1.常量、常指针和指针常量
    this.$confirm的用法
    属性或方法“degreeList”不是在实例上定义的,而是在渲染期间引用的。通过初始化该属性,确保该属性是反应性的,无论是在data选项中,还是在基于类的组件中
    CSS清除浮动
    react里的高阶组件
    map和forEach的区别
    hash和history两种模式的区别
    js原型链的理解
    for..in,for..of 和forEach的区别
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3093802.html
Copyright © 2020-2023  润新知