@Entity
@Table(name = "STUDENT")
public class Student {
private long studentId;
private String studentName;
private List<Phone> studentPhoneNumbers;
....
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "STUDENT_PHONE", joinColumns = { @JoinColumn(name = "STUDENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "PHONE_ID") })
public List<Phone> getStudentPhoneNumbers() {
return this.studentPhoneNumbers;
}
public void setStudentPhoneNumbers(List<Phone> studentPhoneNumbers) {
this.studentPhoneNumbers = studentPhoneNumbers;
}
}
1)Hibernate OneToManyリストまたはIteratorが異なる?
Student student = session.loadStudent(123); // pseudocode
List phoneList = student.getStudentPhoneNumbers();
for (Phone p : phoneList) {
...
}
2)
Student student = session.loadStudent(123); // pseudocode
List phoneList = student.getStudentPhoneNumbers();
Iterator itr = phoneList.iterator();
while(itr.hasNext()) {
...
}
私はここからの回答をお読みください。difference between query.list and query.iterate
明らかlist()
とiterator()
()Query
で違いがあります。 OneToMany
のリストで使用するとどうなりますか?上記の例のように、パフォーマンスの点で違いがありますか?メモリ?
@Scary Wombat、この質問はどのように重複していますか? Hibernateは暗黙的にプロキシを作成して 'List'オブジェクトをラップし、これらの2つのメソッドを呼び出すことは異なる影響を与えるかもしれません。 – GMsoF
投稿したコードの2つのスニペットはまったく同じことを行います。最初のスニペットのforeachループは、2番目のスニペットのように、シーンの背後にあるList.iterator()を使用します。それはHibernateとは関係ありません。 –