私は現在ここで問題に直面しており、皆さんの何人かが私を助けてくれると思いました。SPRING と HIBERNATE を使用してアプリケーションを開発していますが、私の問題は次のとおりです。
1 - 最初にメイン オブジェクトに新しい AudioFile オブジェクト (Domain クラス) を作成し、DAO の hibernateTemplate.save(audioFile) メソッドを使用してデータベースに挿入します。
2 - 次に、DAO の hibernateTemplate.get(1) メソッドを使用してデータベースから行を取得し、インスタンスを audioFile1 オブジェクトに格納します。(タイプ AudioFile)
3 - 次に、ステップ 2を繰り返して、インスタンスを audioFile2 オブジェクトに格納します。
要約すると、私のメインクラスは次のようになります。
ApplicationContext context = new ClassPathXmlApplicationContext(
"application-context.xml");
AudioFileServices audioFileServices = (AudioFileServices) context.getBean("audioFileServices");
AudioFile audioFile = new AudioFile();
audioFile.setAlbum("test");
audioFile.setArtist("test");
audioFile.setLength(1);
audioFile.setPath("test");
audioFile.setTitle("test");
AudioFile a1 = null;
AudioFile a2 = null;
try {
audioFileServices.saveAudioFile(audioFile);
a1 = audioFileServices.getAudioFile(audioFile.getIdAudioFile());
a2 = audioFileServices.getAudioFile(audioFile.getIdAudioFile());
} catch (Exception e) {
e.printStackTrace();
}
問題: audioFile1 と audioFile2 はどちらも同じオブジェクト (データベース内の同じ行) を表していますが、これらは 2 つの異なるインスタンスであり、同じインスタンスを参照する 2 つのオブジェクトではありません。(そうであってほしい) したがって、最初のオブジェクトに変更を加えても、2 番目のオブジェクトには影響しません。(両方とも同じデータベース行にマップされていますが)
AudioFileDAO Bean を AudioFileService Bean に挿入するようにアプリケーション コンテキストを適切に構成し、サービス レイヤー アーキテクチャを使用しています。この厄介な問題を除いて、すべてが完全に機能します。また、トランザクションをセットアップし、SPRING によって AudioFileDAO Bean に注入された sessionFactory Bean も使用しています。
ここで何が欠けているか知っている人はいますか?多分それはHIBERNATE構成の問題ですか?何か案は?
前もって感謝します。(必要に応じて、アプリケーション コンテキスト、サービス、dao コードのコピーを提供できます)