【发布时间】:2012-07-26 08:13:00
【问题描述】:
我的数据库中已有大量现有数据,并希望开发一种积分机制,根据每个用户的操作计算他们的分数。
我正在以可插入的方式实现此功能,因此它独立于主逻辑,并依赖于在实体被修改后发送的 Spring 事件。
问题在于如何处理现有数据。我不想从现在开始收集积分,而是包括到目前为止的所有数据。
最实用的方法是什么?我是否应该以提供 index() 方法的方式设计我的插件,这将迫使我的系统从数据库中获取每个实体,发送一个 EntityDirtyEvent,为每个插件触发点插件,然后更新它,让积分保存在每个实体旁边。这可能会导致大量开销,对吧?
最简单的方法是创建一个复杂的存储过程,然后让 index() 调用该存储过程。然而,这在我看来也是一件坏事。既然无论如何我都必须在java中编写计算点的逻辑,为什么还要在SQL中再次使用它呢?另外,总的来说,我不喜欢将业务逻辑拆分到不同的层。
以前有人做过吗?请帮忙。
【问题讨论】:
标签: java spring hibernate achievements