私は何かに興味がありました。我々は従業員と電話間の簡単な関係を持っているとしましょう:リレーション内のテーブルが空の場合、Hibernateはnullまたは空のコレクションを返しますか?
@Entity
public class Employee {
@Id
@Column(name="EMP_ID")
private long id;
...
@OneToMany(mappedBy="owner")
private List<Phone> phones;
...
}
@Entity
public class Phone {
@Id
private long id;
...
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="OWNER_ID")
private Employee owner;
...
}
はのは社員は、電話テーブルにエントリを何も携帯電話を持っていないと仮定しましょう。 私は
for (Phone phone : employee.getPhones())
{
...
}
はゲッターretunのNULLまたは空のコレクションとはgetching戦略が役割を果たしてしまうだろうどのような理由のためにそれらの上に従業員の電話や繰り返し処理を取得するコードの部分を持っているとしたら。
私の記憶が正しければ、Hibernateはプロキシを使用して、コレクションの独自の実装を持っており、(私が間違っている場合は正しい)ためLAZYはそれがそれらのいずれかでインスタンス化し、必要なときにテーブルからデータを取得し、取得します。 getterが呼び出されたときに、テーブルからデータを取得しようとすると、空のセットが結果として得られ、空のコレクションが返されます。 (これが私の考えです)。または、ゲッターの結果がNULLであるかどうかを常に確認する必要がありますか?
おそらく空リストです。空リストの代わりに 'null'を返すことは悪い習慣です。 – Tunaki
あなたはいつでもゲッターをチェックインし、電話が空であれば空のリストを返すことができます – arados
ええ、私は最終的には残念ながら私はラップトップにアクセスできず、しばらくしていません。いくつかの友達といくつかのことを話し合っていて、私たちは知る必要がありました。私はそれが怠け者だと知っていますが、私はそれを今すぐ確認することができればわかります...申し訳ありません –