首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate:session.get和session.load之间的区别

Hibernate 是一个 Java 持久化框架,用于将 Java 对象映射到关系型数据库中。session.get()session.load() 是 Hibernate 中两个用于从数据库中检索实体的方法。它们之间的主要区别如下:

  1. 查询行为
    • session.get()get() 方法会立即执行数据库查询,并返回实体的一个代理对象。如果实体不存在,则返回 null
    • session.load()load() 方法返回一个实体的代理对象,但并不立即执行数据库查询。当需要访问实体的属性或调用方法时,Hibernate 才会执行查询。
  2. 异常处理
    • session.get():如果实体不存在,get() 方法会抛出 ObjectNotFoundException
    • session.load():如果实体不存在,load() 方法会抛出 EntityNotFoundException
  3. 代理对象
    • session.get():返回一个已初始化的代理对象。
    • session.load():返回一个未初始化的代理对象,即延迟加载。
  4. 缓存
    • session.get():Hibernate 会将查询结果放入一级缓存中,以便后续请求可以直接从缓存中获取数据。
    • session.load():Hibernate 不会将查询结果放入一级缓存中,因此每次调用 load() 方法都会触发数据库查询。

总结:session.get()session.load() 之间的主要区别在于查询行为、异常处理、代理对象初始化以及缓存策略。session.get() 用于获取一个确定存在于数据库中的实体,而 session.load() 用于获取一个可能不存在于数据库中的实体。在选择使用哪个方法时,需要根据实际需求和预期行为来决定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mybatishibernate以及jpa区别_hibernate sql

mybatis主要着力点在于java对象与SQL之间映射关系。...(3)Hibernate是开源一个ORM(对象关系映射)框架 ORM,即Object-Relational Mapping,它作用就是在关系型数据库对象之间做了一个映射。...4、使用hibernate存在原因 (1)JDBC操作数据库很繁琐 (2)SQL语句编写并不是面向对象 (3)可以在对象关系表之间建立关联来简化编程 (4)ORM简化编程 (5)ORM...(2)对大批量数据更新存在问题 (3)系统中存在大量攻击查询功能 (4)缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能对象模型之间如何权衡取得平衡,以及怎样用好Hibernate...mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期bug较多,因而开发出相对稳定软件很慢,而开发出软件却很快。

1.1K20

【SSH快速进阶】——Hibernate继承映射:每棵继承树映射一张表

https://blog.csdn.net/huyuyang6688/article/details/50680899   我们都知道,Hibernate最大一个优点就是使开发更加“面向对象...”,类与类之间有继承关系,Hibernate中也对这种继承关系提供了映射封装。   ...上图中Pig类Bird类继承Animal类,每棵继承树对应一张表,即在同一棵继承树中,所有的类对象信息(记录)共同存放到一张表中,要判断某条记录属于哪个对象,需要在表中添加一个字段进行区分(比如下表...().commit();   执行结果都为: 小猪猪   如果用load方法查询的话,默认是不支持多态查询(hibernate在加载数据时候会自动鉴别类真正类型),因为load默认支持lazy...查询支持多态查询: session=HibernateUtils.getSession(); session.beginTransaction(); Animal animal=(Animal)session.get

37920

MyBatis hibernate 区别有哪些

可移植性:MyBatis 有很多自己写 SQL,因为每个数据库 SQL 可以不相同,所以可移植性比较差。学习使用门槛:MyBatis 入门比较简单,使用门槛也更低。...二级缓存:hibernate 拥有更好二级缓存,它二级缓存可以自行更换为第三方二级缓存。 ### MyBatis 有哪些执行器(Executor)?    ...MyBatis 有三种基本Executor执行器:SimpleExecutor:每执行一次 update 或 select 就开启一个 Statement 对象,用完立刻关闭 Statement 对象...### MyBatis 分页插件实现原理是什么?    ...分页插件基本原理是使用 MyBatis 提供插件接口,实现自定义插件,在插件拦截方法内拦截待执行 SQL,然后重写 SQL,根据 dialect 方言,添加对应物理分页语句物理分页参数。

34800

hibernatemybatisplus区别_Mybatis框架

我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernatemybatis做一下对比,便于大家更好理解学习...缓存,并每隔 60 秒刷新,存数结果对象或列表 512 个引用,而且返回对象被认为是只读,因此在不同线程中调用者之间修改它们会 导致冲突。...其中SessionFactoryBuider,SessionFactory,Session生命周期都是差不多HibernateMyBatis都支持JDBCJTA事务处理。...Hibernate优势 HibernateDAO层开发比MyBatis简单,Mybatis需要维护SQL结果映射。...Hibernate缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你经验能力都很强才行。

1.9K10

HTTPHTTPS 之间区别

PS: https就是httpTCP之间有一层SSL层,这一层实际作用是防止钓鱼和加密。防止钓鱼通过网站证书,网站必须有CA证书,证书类似于一个解密签名。...另外是加密,加密需要一个密钥交换算法,双方通过交换后密钥加解密。 http与https有什么区别呢?本文详解httphttps区别。...所以httphttps之间区别就在于其传输内容是否加密是否是开发性内容。这也是你为什么常常看见https开头网址都是一些类似银行网站这类网址原因。...HTTPSHTTP区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。...b) 服务端客户端之间所有通讯,都是加密. i. 具体讲,是客户端产生一个对称密钥,通过server 证书来交换密钥,一般意义上握手过程。 ii.

1.4K40

SSH框架之Hibernate第一篇

ct = session.load(Customer.class, 4L); // 延迟加载: 在调用方法时候,先不去查询加载数据,当使用到这个数据时候才去加载 System.out.println...(ct); // 重点面试题(100%): get查询load查询区别: // 1(重点): get查询是立即加载,load查询是延迟加载...> Hibernate属性 1.4.3 映射文件配置 映射文件就是将类与表建立映射关系文件,这个文件只要是XML即可.通常名称 : 类名.hbm.xml class标签 : 建立类映射...catalog : 数据库名称(可以省略) id标签 : 建立主键类中属性映射 name : 类中属性名称 column : 表中字段名称....区别: get采用立即加载(马上发送一条SQL语句) : 程序执行到这行时候,就会马上发送SQL语句进行查询.

55920

Hibernate_day03总结

Hibernate_day03总结 今日内容 l Hibernate检索方式 l Hibernate抓取策略 l Hibernate批量检索 l 事务并发问题 1.1 上次课内容回顾: Hibernate.... * inverse:外键维护 控制是外键关系. * 多对多: * 一对一: 1.2 Hibernate检索方式: 1.2.1 Hibernate检索方式: Hibernate中提供了五种检索方式...,1); * session.load(Customer.class,1); 3.HQL检索: HQL:Hibernate Query Language....select * from A left outer join B on 条件; * 右外连接: * select * from A right outer join B on 条件; 面试题:内连接外连接有什么区别...* 左外连接: * 右外连接: * 迫切左外连接: @Test /** * 区分内连接迫切内连接区别 */ publicvoid demo1(){ Session session = HibernateUtils.openSession

1.1K30

Statement PreparedStatement之间关系区别

大家好,又见面了,我是你们朋友全栈君。 Statement PreparedStatement之间关系区别....关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译,批处理比Statement效率高 详解:...接口:public interface PreparedStatement extends Statement之间继承关系 SQL 语句被预编译并存储在 PreparedStatement 对象中...注:用于设置 IN 参数值设置方法(setShort、setString 等等)必须指定与输入参数已定义 SQL 类型兼容类型。...例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法,问号位置也是应该注意,因为第一个问好位置为1,第二个问号位置为2.以此类推。

1.6K20

PAAS、IAASSAAS之间区别

你一定听说过云计算中三个“高大上”你一定听说过云计算中三个“高大上”概念:IaaS、PaaSSaaS,这几个术语并不好理解。不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!...其所能提供云服务也就是云计算三个分层:PAAS、IAASSAAS,就像披萨店提供三种服务:买成品回家做、外卖到披萨店吃。...一些大IAAS公司包括Amazon, Microsoft, VMWare, RackspaceRed Hat.不过这些公司又都有自己专长,比如Amazon微软给你提供不只是IAAS,他们还会将其计算能力出租给你来...PAAS公司在网上提供各种开发分发应用解决方案,比如虚拟服务器操作系统。这节省了你在硬件上费用,也让分散工作室之间合作变得更加容易。...尽管这些网页服务是用作商务娱乐或者两者都有,但这也算是云技术一部分。

2.1K20

IMAPSMTP服务之间区别联系

aoksend将介绍IMAPSMTP服务之间区别联系。1. IMAPSMTP是什么?IMAPSMTP是两种用于处理电子邮件协议。...用户可以通过IMAP在不同设备上同步收件箱、已发送邮件其他文件夹中邮件。3. SMTP服务作用特点SMTP服务是用于发送电子邮件协议,它将电子邮件从发件人客户端发送到收件人邮件服务器。...SMTP是一个简单、文本协议,用于在邮件服务器之间传输电子邮件。4. IMAPSMTP联系IMAPSMTP之间有一些联系。首先,它们都是用于处理电子邮件协议。...其次,它们都涉及到邮件服务器之间通信。最后,它们都是为了提高电子邮件传输效率安全性而设计。5....IMAPSMTP区别尽管IMAPSMTP都是用于处理电子邮件协议,但它们之间有一些明显区别。最主要区别在于,IMAP是用于接收管理邮件协议,而SMTP是用于发送邮件协议。

31400

理解 CI CD 之间区别

大家好,我是 ConardLi,今天我们来看一个研发中非常常见概念,CI/CD,你有了解过它们区别吗?(本文由 wangjie 翻译) 有很多关于持续集成(CI)持续交付(CD)资料。...持续集成持续交付都是开发方法。它们没有链接到特定工具或者供应商。...所以,我们不会陷入使用工具技术术语来解释 CI / CD 陷阱,我们将用最重要东西来解释:人!...开发应用传统方法如下: Alice, Bob, Charlie 在它们各自工作区,工作在3个不同 feature。每个开发人员都以各自方法编写测试代码。...在发布时还没有准备就绪功能,或者根本就不会交付给客户,或者他们进一步推迟发布日期。 发布导致开发人员(想要发布新功能)运营(想要稳定,不想一次部署太多新功能)之间关系变得紧张。

1.4K10
领券