1
我做了很多谷歌搜索,但我仍然不明白爲什麼我應該使用關聯在休眠? 我設法做的事情沒有提到一對多或任何其他關聯。 我總是可以使用某些連接條件在表格上執行Cartesian產品,而無需顯式使用hibernate連接。 如果我不使用它們,我會錯過什麼? 請說明它們的優點或缺點。 謝謝。爲什麼在休眠中使用關聯?
我做了很多谷歌搜索,但我仍然不明白爲什麼我應該使用關聯在休眠? 我設法做的事情沒有提到一對多或任何其他關聯。 我總是可以使用某些連接條件在表格上執行Cartesian產品,而無需顯式使用hibernate連接。 如果我不使用它們,我會錯過什麼? 請說明它們的優點或缺點。 謝謝。爲什麼在休眠中使用關聯?
Hibernate中關聯的主要優勢在於它們允許您通過源代碼輕鬆訪問/保存child
或parent
實體。例如,如果我有以下幾點:
@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或連接。您還可以輕鬆地執行其他粗陋操作,例如插入和刪除。
順便說一句你提到笛卡爾連接在你原來的問題,這些應該是例外,而不是規範。它們可能帶來顯着的性能開銷,並且通常可以使用不同的連接更高效地完成。
感謝您的回覆。 大家都說性能更好。 請告訴我/爲什麼? &如果一個查詢(帶有子查詢)在mysql中快速運行(比整個表上的連接查詢)(通過分析檢查),它在Hibernate中運行速度也會很快。 –