【发布时间】:2014-03-06 20:13:20
【问题描述】:
我正在构建一个简单的 Spring + Hibernate 应用程序,我有以下模型:
Link ( id, url, title )
History ( link_id, report_time, number_of_likes )
在我的 Main 方法中,我有这样的东西:
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"spring.xml"});
...
((LinkDao) context.getBean("linkDao")).updateAll(date);
...
}
此应用每 30 分钟运行一次;进入 LINK 表并在 HISTORY 表中记录当时 Facebook 的点赞数。
现在的问题是我需要在 LinkDaoImpl 但我无法从 LinkDaoImpl 访问 HistoryDaoImpl,除非我将上下文传递给 LinkDaoImpl。另外,如果我包括:
@OneToMany
List<History> history
在 Link 模型中,Hibernate 创建了一个额外的 HISTORY_LINK 表,这是不必要的。
这样做的正确方法是什么?
【问题讨论】:
-
我不明白为什么你的历史表被保存在一个只应该用于访问链接表数据的方法中,你能解释一下为什么会这样。你真的应该重新考虑那个设计。 LinkDaoImpl 保存的历史表隐藏了 LinkDaoImpl 的 updateAll 的副作用,而且这个函数做了不止一件事。
-
@MarquisBlount 嗯,LINK 表也有类似 NUMBER_OF_FB_LIKES 的字段,...我调用 updateAll 方法首先更新 LINK 表,但 也我将相同的值存储在 HISTORY 表中带有时间戳,所以以后我可以生成图表...