0

Javaアプリケーション(Eclipseなど)でDB関連の操作を実行したいという状況があります。MySQLをRDBMSとして使用し、HibernateをORMプロバイダーとして使用しています。

  1. Javaの埋め込みSQLを使用してすべてのレコードを取得します。

//接続を定義します...etc

ResultSet result = myStmt.executeQuery( "SELECT * FROM employees");

//イテレータ

  1. Hibernate ORM/JPQLを使用してすべてのレコードを取得します。

//接続、エンティティマネージャ....など

リスト結果=em.createQuery( "SELECT emp FROM Employees emp")。getResultList();

//イテレータ

RDMSがセカンダリメモリ(DISK)にあることを知っています。問題は、両方の結果がいつ返されるかということです。従業員は実際どこにいますか?セカンダリ(SM)またはメインメモリ(MM)で?

最後に、さらにテストするために2つのオブジェクト母集団を作成します。1つはSMで動作し、もう1つはMMで動作しますか?これはどのように可能ですか?

ありがとう

フランク

4

1 に答える 1

0

あなたの Java オブジェクトは本当の Java オブジェクトであり、少なくともしばらくの間は (あなたの用語を使用するために) MM にあります。Hbernate/JPA プログラミング モデルの優れた点は、MM ではオブジェクトを他の Java オブジェクトであるかのように扱うことができ、オブジェクトにいくつかの変更を加えることができることです。その後、合意された時点で、Hibernate の永続化メカニズムによってオブジェクトが日光浴します。と、SM(ディスク)。

MM と SM の間の遷移がいつ発生するかを理解するために、セッションとトランザクションの意味をよく読む必要があります。また、2 人のユーザーが同じデータを同時に操作したい場合に何が起こるかを理解することも非常に重要です。

たぶんここから始めます

(少なくとも現時点では) ディスク上のどのデータにも関連しないオブジェクトを MM で作成することもできます。これらは「一時的な」オブジェクトであり、ディスク上のデータからメモリ内のデータを「切断」することもできます。

ここでの私の結論は、Hibernate/JPA は永続化コーディングから多くの単調な作業を取り除きますが、スケールの複雑さを隠すことはできません.考え。Hibernate を使用すると、良いことを達成できますが、そのように考えることはできません。問題のドメインがより複雑になるにつれて、慎重に選択する必要があります。

于 2009-07-12T20:33:35.807 に答える