2013-03-23 21 views
0

例如,這些類:JPA中的關係。他們如何在內部工作?

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

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

有Boss和僱員之間的關係。我可以從老闆找到所有的員工,做boss.getEmployees()。

SDFDK做什麼來了解關係元素?從老闆那裏保存所有員工的ID?

我想知道有boss.getEmployees(),和查詢之間的性能差異 「選擇e FROM僱員e其中e.id = 'boss_id'」

感謝。

回答

2

我想知道在 boss.getEmployees()之間的性能差異,以及與查詢 「選擇E從員工e其中 e.id = 'boss_id'」

差異在性能上是肯定的,但工作原理是一樣JPA當然比JDBC慢。 JDBC也低於JPA。我告訴你這一點。使用ORM有一個主要優勢,您可以節省大量的時間來實現您自己的ORM,但是如果您實施自己的ORM,則對查詢的控制權不足。你對JPA的方法和其他內容的內部實現一無所知。

當您實現自己的ORM時,您可以更好地控制查詢,您可以根據應用程序需求優化查詢,但需要一些時間。 JPAORM框架,而不是你實現所有需要的數據庫邏輯。你只需要通過註釋告訴他你想要什麼。

ORM框架下的優勢是,你的應用程序將成爲獨立的數據庫層(型數據源)上,但也可以通過實施適當的設計模式,如AbstractDAOFactoryAbstractDataMapper等實現這一