2013-10-02 28 views
1

我做了很多谷歌搜索,但我仍然不明白爲什麼我應該使用關聯在休眠? 我設法做的事情沒有提到一對多或任何其他關聯。 我總是可以使用某些連接條件在表格上執行Cartesian產品,而無需顯式使用hibernate連接。 如果我不使用它們,我會錯過什麼? 請說明它們的優點或缺點。 謝謝。爲什麼在休眠中使用關聯?

回答

1

Hibernate中關聯的主要優勢在於它們允許您通過源代碼輕鬆訪問/保存childparent實體。例如,如果我有以下幾點:

@Entity 
public class Student{ 

    @OneToMany 
    private List<Course> courses = new ArrayList<Course>(); 

    //Accessors 
} 

在我的代碼可以使用關聯來獲取所有課程的學生,如:

Student student = studentRepo.findById(1, Student.class); 
List<Course> courses = student.getCourses(); 

這是所有需要遍歷該父孩子的關係。不需要額外的SQL或連接。您還可以輕鬆地執行其他粗陋操作,例如插入和刪除。

順便說一句你提到笛卡爾連接在你原來的問題,這些應該是例外,而不是規範。它們可能帶來顯着的性能開銷,並且通常可以使用不同的連接更高效地完成。

+0

感謝您的回覆。 大家都說性能更好。 請告訴我/爲什麼? &如果一個查詢(帶有子查詢)在mysql中快速運行(比整個表上的連接查詢)(通過分析檢查),它在Hibernate中運行速度也會很快。 –