JPA中的关系。他们内部如何运作?

时间:2013-03-23 20:51:40

标签: jpa relationships

例如,这些类:

public class Boss{
    ... 
    @OneToMany(mappedBy="boss")
    Set<Employee> employees;
}

public class Employee{
    @ManyToOne
    Boss boss;
    ...
}

Boss和Employee之间存在关系。我可以找到Boss的所有员工,做boss.getEmployees()。

SDFDK如何知道关系的元素?从老板那里保存所有员工的身份?

我想知道boss.getEmployees()与“SELECT e FROM Employee e where e.id ='boss_id'”

之间的性能差异

感谢。

1 个答案:

答案 0 :(得分:2)

  

我想知道两者之间的性能差异   boss.getEmployees(),以及一个带有“SELECT e FROM Employee e where”的查询   e.id ='boss_id'“

差异在性能上是肯定的,但效果相同。当然,JPAJDBC慢。 JDBC也低于JPA。我告诉你这个。使用ORM有一个主要优势,您可以节省大量时间来实现自己的ORM,但是如果您实现自己的ORM,则没有那么多的查询控制权。 {1}}。您对方法的内部实现和JPA的其他内容一无所知。

当您实现自己的ORM时,您可以更好地控制查询,您可以根据应用程序要求优化查询,但这需要一些时间。 JPAORM框架,它实现了所有必需的数据库逻辑。你只需要通过注释告诉他你想要什么。

ORM框架的下一个优点是您的应用程序将独立于数据库层(数据源类型),但您也可以通过实现适当的设计模式来实现这一点,例如AbstractDAOFactory,{{1}等等。