我必须通过数据库并根据逻辑修改它。问题看起来像这样。我的数据库中有一个历史表,我必须修改。 在修改任何内容之前,我必须查看一个对象(历史表中有多行)是否具有某个状态,比如4或9.如果它有状态4或9,那么我必须检查当前找到的行之间的行和下一个状态4或9行。如果这样的行(在这些状态之间)在特定列中具有特定值,那么我在下一行中执行某些操作。我希望这很简单,可以给你一个想法。我必须检查所有对象。请记住,任何对象都可以在其生命周期的任何地方进行修改(当然,直到达到最终状态)。
我正在使用SQL Sever 2005和Hibernate。 AFAIK我无法在Transact SQL中做这么复杂的检查!那么你建议我做什么?到目前为止,我一直在考虑将其作为JUnit测试。这将具有让Hibernate帮助我进行修改的优点,并且我将拥有Java可能需要的列表和其他数据结构,并且在SQL中不存在。如果我作为JUnit测试我这样做,我不会丢失我的映射文件! 我很好奇你会用什么方法?
答案 0 :(得分:0)
我认为您应该能够使用游标来管理SQL Server中的复杂检查。你没有提到你需要这么做的频率,但如果这是一次性的事情,你可以用Java或SQL Server来做,这取决于你的舒适程度。
如果需要对每个CRUD操作应用此检查,则可能需要使用数据库触发器。如果逻辑可能会在一段时间内频繁更改,我宁愿在Hibernate中编写检查,假设没有人会直接访问数据库。