2009-11-24 69 views
0

我刚开始一份新工作,并从地狱中继承了这个项目。 地狱= {超过计划2年,过于复杂,同时使用oracle和sql server}维护/自动生成IBatis SQL映射?

Oracle服务器中有100多个存储过程,每个存储过程都有一个IBatis SQL Map。 一些共享相同的结果图。数据库管理员喜欢每天更换商店特效,不告诉我。

问题: 是否有任何工具可以检查解决方案中的所有IBatis SQL映射? 理想情况下它会验证:

  1. 存储过程存在
  2. 存储过程参数在参数地图匹配的那些
  3. 存储过程结果[列名]中的结果地图
  4. 存储匹配的那些过程结果不会丢失结果地图上指定的任何内容
  5. 结果地图中的对象属性标题与结果地图上列出的对象相匹配

背景:我通常只使用SQL Server和SubSonic 2.2作为ORM。这种方式我只是执行一个命令,我的DAL神奇地自动生成,这样,如果我需要的列丢失,我会很容易地理解编译时错误,而不是一个混乱的运行时错误。我可以在这里使用类似的工具吗?

感谢您的帮助!

回答

1

有一个名为Ibator的工具,但我不认为它是用于你所描述的。我的方法是创建测试来执行iBatis代码。这样,当测试失败时,你知道有什么地方是错误的。您可以做的其他事情是使用Oracle的metadata来测试过程是否存在等。这些检查可能是额外的测试。

0

自从我触及Oracle之后已经有一段时间了,但是如果我记得正确的话,存储过程的输出(例如select)就不会在任何地方声明。因此,它需要通过工具进行反向工程。 LinqToSql试图为SQL Server做到这一点,但部分成功,但这通常是一个困难且不可靠的过程。所以,这似乎会让你的清单上的项目3-5几乎无法用代码生成工具来实现。我还没有深入研究SubSonic 2.2对存储过程的支持,但我认为它也会与第3-5项相冲突。相比之下,作为存储过程的一部分声明的单个输出字段相当简单易于处理。

项目1 & 2更容易实现,但我不熟悉iBatis附近的工具,对不起。我不认为iBatis或甲骨文真的与你的问题有很大关系。

最好的办法可能是说服你的DBA更有用和/或积极运行差异检测和手动处理存储过程更改。