Java Springで@OneToMany、@ManyToOneのような関係を使用するブート休止状態のプロジェクトは良い方法ですか?@OneToManyのような関係を使うと、Hibernateの@ManyToOneは良い習慣であるかどうか?
-5
A
答えて
0
かかわらず良い練習の、ここでのポイントは、あなたがこれをモデル化するための2つのオプションがあります:
- 次期手動
Employee
にDepartment
のIDを割り当てることを。 - 保存時に新しい
Employee
と既存のDepartment
エンティティを関連付けます。
あなたが実際に選ぶのはいくつかの要因によって決まります。
外部キー制約が課せられていないレガシーシステムや、それらの制約を課したくない状況では、前者が頻繁に使用されます。これは多くの場合、2つのケースのほうが稀ですが、特定の状況下では理にかなっています。
エンティティドメインモデルは、データベースモデルによって暗示されている制限や制約を最もよく表しますが、ドメインエキスパートが使用する制限も示しています。たとえば、有効なDepartment
に関連付けられていなければEmployee
を保存することはできません。したがって、従業員には識別子ではなくDepartment
を割り当てます。
当然のことながら、エンティティモデルに対して発行できるクエリの種類に影響を与えますが、その影響は最小限です。
private Department getDepartmentById(Long departmentId)
throws InvalidDepartmentException {
try {
return entityManager.getReference(Department.class, departmentId);
}
catch (EntityNotFoundException e) {
throw new InvalidDepartmentException(departmentId, e);
}
}
private List<Employee> getEmployeesNoAssociation(Long departmentId)
throws InvalidDepartmentException {
final Department dept = getDepartmentById(departmentId);
return entityManager
.createQuery("SELECT e FROM Employee e WHERE e.departmentId = :id", Employee.class)
.setParameter("id", dept.getId())
.getResultList();
}
private List<Employee> getEmployeesWithAssociation(Long departmentId)
throws InvalidDepartmentException {
final Department dept = getDepartmentById(departmentId);
return entityManager
.createQuery("SELECT e FROM Employee e WHERE e.department = :dept", Employee.class)
.setParameter("dept", dept)
.getResultList();
}
は要するに、良い練習は、その使用されることを意図したとおりに、あなたのドメインをモデル化することです。関連マッピングを使用するかどうかは、状況に応じて大きく異なります。
関連する問題
- 1. OneToManyとManyToOneの関係
- 2. 多くのIBOutletsを使うのは良い習慣ですか?
- 3. JPA ManytoOneと永続ないOneToMany関係
- 4. Hibernate - OneToMany関係
- 5. Hibernate @OneToMany関係
- 6. Hibernate/JPA ManyToOne対OneToMany
- 7. hibernateの2つのテーブル間に@OneToManyと@ManyToOneの関係を持たせることはできますか?
- 8. Hibernate注釈の使用方法@ManyToOneと@OneToManyの関連付け
- 9. Hibernate @OneToMany関係マッピング
- 10. どのような学習習慣をお勧めできますか?
- 11. Javaで `this`を使うのは悪い習慣ですか?
- 12. Javaではどのようなグローバル変数が悪い習慣ですか?
- 13. memcpyをstrncpyなどに使うのは悪い習慣ですか?
- 14. Hibernate OneToManyとManyToOneの混乱!ヌルリスト!
- 15. Spring Hibernate onetomanyの関係
- 16. どのような関係ですか?
- 17. 一般ヘルパー関数に$ .extendを使うのは悪い習慣ですか?
- 18. NHibernate/Hibernate OneToMany関係でinverse = falseを使用するのはいつですか?
- 19. PHP - 定数とは何ですか、それは良い慣習ですか、変数とはどのように違うのですか?
- 20. OneToManyの関係がうまく動作しないようです。
- 21. @OnetoMany関係Hibernate Spring MVC
- 22. Python Elixir OneToManyとManyToOneの実装:On OneToMany関係で新しいレコードを挿入しますか?
- 23. セキュリティとMySQLに関するこの良い習慣です
- 24. コードフローの良い習慣?
- 25. オブジェクトにはどのような関係がありますか?
- 26. Hibernate - @ManyToOne関連で良好なスループットを維持しながらn + 1の問題を回避するにはどうすればよいですか?
- 27. セレクタとして親セレクタ(&)を単独で使用することは何ですか?そのようなセレクタを使うのは悪い習慣ですか?
- 28. Hibernate:@OneToMany/@ManyToOneの問題をマッピングする(エンティティの主キーを使用しない)
- 29. CSS - 'Common Classes'悪い習慣かどうか?
- 30. 「例外をスローする」というのは悪い習慣ですか?