我收集了一些关于我的系统的统计数据,比如说,使用我的系统的人数和他们这一天花费的总时间。我的统计实体如下所示:
class Stats {
Date date;
Long numUsers;
Long totalTime;
}
白天我需要根据以前的值更新这些统计信息,例如:
stats.numUsers += 1;
stats.totalTime += timeSpentByLastUser;
当然,如果今天是第一次,我需要初始化这些数据:
stats.numUsers = 1;
stats.totalTime = timSpentByFirstUserForToday;
现在我想把它全部移到数据库中。也就是说,创建Stats
一个实体并根据先前的值进行原子插入/更新。那么我该怎么做呢?我正在使用JPA,因此任何适合其模型的解决方案都将是合适的。
请注意,JPA 具有插入或更新机制EntityManager.merge()
——但它没有考虑实体的先前状态,这在此处是必不可少的。