`

JPA中find 和getRefrence 的区别

    博客分类:
  • JPA
阅读更多

JPA 中通过primaryKey 来得到实体对象可以通过一个连个方法

find(), getRefrence();这两个方法相当于Hibernate中的get()和load()方法。

这两个方法的区别跟get()和load()方法的区别是一样的,

其中hibernate中get方法和load方法的根本区别在于:

如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。

 

对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。


一句话,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null

分享到:
评论

相关推荐

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    通过阅读《Spring Data JPA 中文文档[1.4.3]》PDF 文件,开发者可以深入了解这些特性和如何在实际项目中应用它们,从而提升开发效率和代码质量。文档中可能还会涵盖错误处理、性能优化以及与其他 Spring 模块的协作...

    Spring Data JPA中文文档[1.4.3].zip

    6. **分页和排序**:Spring Data JPA支持在查询结果中进行分页和排序,可以方便地通过Repository接口实现。 7. **存储过程**:Spring Data JPA也支持调用数据库存储过程,并将其结果转换为Java对象。 8. **JPA实体...

    JPA中文解释,JPA的API

    标题中提到的"JPA中文解释"是指对于JPA的概念、原理、使用方法等进行了中文语言的详细解读,这对于中文环境下的开发者来说非常方便,能够更好地理解和应用JPA。JPA的核心理念是对象关系映射(ORM),它将Java对象...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    spring data jpa中文文档

    在快速了解和上手Spring Data JPA的过程中,以下是一些关键知识点: 1. **什么是Spring Data JPA** Spring Data JPA 是Spring Data项目的一部分,它允许通过声明式的方式处理数据访问。它提供了Repository接口的...

    jpa1.0中文手册

    根据提供的信息,我们可以从标题、描述和部分内容中提取出关于JPA 1.0中文手册的知识点。 首先,标题中提到了“jpa1.0中文手册”,指出了文档所针对的技术是Java Persistence API(JPA)的1.0版本。JPA是一个Java...

    JPA_官方文档_中文版

    综上所述,JPA作为Java世界中一个里程碑式的ORM规范,其设计理念和实现机制均体现了现代软件工程对于简化复杂度、提高开发效率和促进代码复用的追求。通过深入理解JPA的核心技术和应用场景,开发者能够更好地利用这...

    JPA学习中文文档

    RM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的...

    jpa开发实例和文档

    **JPA.txt**可能是一个文本文件,里面可能是JPA的笔记、教程、命令行示例或者是开发者在实践中遇到的问题和解决方案。 通过学习这些材料,开发者不仅可以了解JPA的基础知识,还能掌握如何在实际项目中应用JPA进行...

    pring date jpa中文指南文档

    通过阅读《Spring Data JPA 中文指南》,开发者能够全面了解和掌握Spring Data JPA的使用,提升项目中的数据访问效率,减少与数据库交互的复杂性,提高代码的可维护性和可读性。这份文档详细解析了每个知识点,并...

    jpa学习笔记 介绍了jpa中state的概念和应用

    在Java Persistence API (JPA) 中,理解和掌握实体(Entity)的状态对于有效地管理数据库中的对象至关重要。本篇学习笔记主要探讨了JPA中实体的状态及其转换,包括New、Managed、Detached和Removed四种状态。 首先...

    springboot同时整合JPA和mybatis的demo

    本示例"springboot同时整合JPA和mybatis的demo"旨在演示如何在一个项目中同时使用Spring Boot与两种ORM(对象关系映射)框架:JPA(Java Persistence API)和MyBatis。这为我们提供了更大的灵活性,可以根据不同的...

    Spring Data JPA中文文档[1.4.3]

    2. **自动查询生成**:Spring Data JPA可以根据方法签名自动构建SQL或HQL查询,例如,`findAll()`返回所有实体,`findByUsername(String username)`则会生成一个根据用户名查找的查询。 3. **Pageable和Sort接口**...

    Mybatis和JPA区别表格详细比较.docx

    Mybatis 需要在 Mapper 和 XML 文件中添加对应的代码,而 JPA 可以通过简单的注解实现。 5. **分页支持**: - 两者都支持分页查询,Mybatis 可以在 SQL 语句中直接编写分页逻辑,JPA 则可以通过 `Pageable` 接口...

    JPA(hibernate) Dao 和 DaoSupport

    在JPA和Hibernate中,可以使用`Page`或`Slice`接口(Spring Data提供)来实现分页查询,这些接口允许你指定页码和每页大小,返回结果包含当前页的数据以及总页数等信息。 2. **PageIndex.java** - 这个类可能是用于...

    JPA源文件/jpa学习

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中存储、检索和管理对象的工作。JPA是Java EE和Java SE环境中的一种ORM(Object-Relational Mapping)...

    spring注解+spring data jpa文档+JPA文档.rar

    Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...

    JPA 源码和文档

    Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它提供了一种面向对象的方式来处理数据库操作,使得开发人员可以使用Java对象来操作数据库记录,而无需编写大量的SQL语句。JPA是...

    jpa学习代码和ppt

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它是ORM(Object-Relational Mapping)的一种实现。JPA的主要目标是提供一个规范,使得开发人员可以使用Java对象来操作数据库...

    spring-data-jpa-2.0.9.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics