Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA:实体经理';s find方法vs jpql连接_Jpa_Jpql_Entitymanager - Fatal编程技术网

JPA:实体经理';s find方法vs jpql连接

JPA:实体经理';s find方法vs jpql连接,jpa,jpql,entitymanager,Jpa,Jpql,Entitymanager,如果我有一个与实体B有一对多关系的实体A,并且我必须获取A和关联的B,我可以使用EntityManager的find方法,或者使用JOIN编写JPQL查询 在效率和最小DB调用方面,哪种方法更好?我假设EntityManager.find(类、主键等)调用将加载所有相关的B,这要归功于@JoinTable和@OneToMany注释的正确使用,因此find和JPQL连接在单个调用中产生相同的结果 如果这是真的,那么我对Hibernate和JPA(2.0/2.1)的经验是没有区别,特别是如果使用我使

如果我有一个与实体B有一对多关系的实体A,并且我必须获取A和关联的B,我可以使用EntityManager的find方法,或者使用JOIN编写JPQL查询


在效率和最小DB调用方面,哪种方法更好?

我假设EntityManager.find(类、主键等)调用将加载所有相关的B,这要归功于@JoinTable和@OneToMany注释的正确使用,因此find和JPQL连接在单个调用中产生相同的结果

如果这是真的,那么我对Hibernate和JPA(2.0/2.1)的经验是没有区别,特别是如果使用我使用的辅助缓存。做任何方便的事

话虽如此,唯一可以确定的方法是自己进行计时。不仅不同的JPA实现(如Hibernate和EclipseLnk)之间存在差异,而且同一系统的不同版本之间也存在差异


此外,您的JPQL性能将根据您是否预编译了查询(我总是这样做)或它是一个动态标准JPQL而有所不同。此外,各种辅助缓存极大地影响性能

谢谢萨金塔。需要查看您提到的所有要点。如果一级缓存中存在一个对象,那么find将立即获取该对象,因此没有SQL,这一事实又如何呢。JPQL将始终发布SQLGood point Billy。这对做出选择有很大帮助。