1. ホーム
  2. java

[解決済み] 用語の明確化 - DBからエンティティを取得する際にJPAまたはHibernateエンティティを「ハイドレート」するとはどういう意味か?

2023-07-04 20:59:24

質問

ORM / エンティティのレイジーローディングの文脈で、私はハイドレーションという用語について次のように理解しています。

Quot;Hydrating" は、レイジーローディングを使用して取得したエンティティの、以前に設定されていない属性の一部またはすべてに値を設定するプロセスを説明します。

例: クラス Author はデータベースから読み込まれます。

@Entity
class Author
{
     @Id
     long id;
     List<Book> books;
}

当初は books コレクションは入力されません。

を読み込む処理は、私の理解では books コレクションをデータベースから読み込む処理は、quot;Hydrating" と呼ばれると私は理解しています。

この定義は正しいですか、また、この用語は一般的なものですか。 このプロセスに対して使用すべき、より一般的な用語はありますか?

どのように解決するのですか?

ハイドレートは、データベースからインスタンス化された (しかし空の) 値オブジェクト/モデルを入力するための用語として始まりました (特に Hibernate において)。

BizTalkのような他のさまざまなORMやツールは、ハイドレートや他の関連する用語を使用します(たとえば、BizTalkは、インスタンスは利用できるがまだ入力されていないという意味で、Dehydratedという用語を使用します)。

個人的には、冗長な用語のオーバーホールに嫌悪感を抱いています。 ポピュレートされた は同じことを意味し、言語を再発明する必要はありません。それは何も追加せず、混乱を招きます (再発明された用語に遭遇したときの一般的な最初の考え。 これは何か違っていて、魔法のようなものなのだろうか? ).

このスタイルの言語をBizTalkで拡張したもので、具体的には 脱水 は冗長です。 人々は言い方を忘れていないことを期待します。 または クリア ?

水分補給

といった関連するメタファーは、本質的にマーケティング ツールであり、Hibernate を競合製品から差別化するために考案されました。

現時点では、Hibernateと他のORM製品はこれらの用語を何年も使用しているため、ハイドレート(およびデハイドレート)はここにとどまることになります。