0

我目前在这里遇到问题,我想也许你们中的一些人可以帮助我。我正在使用 SPRING 和 HIBERNATE 开发应用程序,我的问题如下:

1 - 我首先在我的主对象中创建一个新的 AudioFile 对象(域类),然后使用 DAO 中的 hibernateTemplate.save(audioFile) 方法将其插入到数据库中。

2 - 然后我使用 DAO 的 hibernateTemplate.get(1) 方法从数据库中检索行,并将实例存储到 audioFile1 对象中。(音频文件类型)

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();
}

ISSUE: audioFile1 和 audioFile2 都代表同一个对象,(数据库中的同一行)但是,它们是两个不同的实例,而不是引用同一个实例的两个对象。(如我所愿)因此,对第一个对象所做的任何修改都不会影响第二个对象。(即使它们都映射到同一个数据库行)

我已正确配置应用程序上下文以将 AudioFileDAO bean 注入 AudioFileService bean 并使用服务层架构。除了这个烦人的问题外,一切都完美无缺。我还设置了事务,并且正在使用由 SPRING 注入 AudioFileDAO bean 的 sessionFactory bean。

你们中有人知道我在这里缺少什么吗?也许这是一个 HIBERNATE 配置问题?有任何想法吗?

先感谢您。(如果需要,我可以提供我的应用程序上下文、服务和 dao 代码的副本)

4

2 回答 2

0

这可能是因为 Hibernate 没有缓存检索到的对象实例。我会研究休眠配置

于 2012-05-03T23:05:28.453 回答
0

如何设置 a2 = a1,而不是从方法 getAudioFile 获取。

于 2012-05-03T22:56:46.337 回答