维护/自动生成IBatis SQL Maps?

时间:2009-11-24 18:15:32

标签: orm oracle10g ibatis ibatis.net

我刚开始一份新工作并从地狱继承了这个项目。 地狱= {超过2年的时间表,过于复杂,同时使用oracle和sql server}

Oracle服务器中有100多个存储过程,每个存储过程都有一个IBatis SQL Map。 有些人共享相同的结果图。 DBA喜欢每天更改商店的操作,而不是告诉我。

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

  1. 存储过程存在
  2. 存储过程参数与参数映射
  3. 中的参数匹配
  4. 存储过程结果[列名称]与结果映射
  5. 中的匹配
  6. 存储过程结果不会遗漏结果地图上指定的任何内容
  7. 结果图中的对象属性标题与结果图
  8. 中列出的标题相匹配

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

    感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

有一个名为Ibator的工具,但我不认为它是针对您所描述的内容。我的方法是创建运行iBatis代码的测试。这样,当测试失败时,您就会知道出错了。您可以做的其他事情是使用Oracle的metadata来测试程序的存在等。这些检查可能是额外的测试。

答案 1 :(得分:0)

自从我触及Oracle以来已经有一段时间了,但是如果我没记错的话,存储过程的输出(例如来自select)就不会在任何地方声明。因此,它需要通过工具进行反向可操作。对于SQL Server,LinqToSql尝试这样做,部分成功,但它通常是一个困难且不可靠的过程。所以,这似乎使您的列表中的项目3-5几乎无法使用代码生成/工具。我没有深入研究SubSonic 2.2对存储过程的支持,但我认为它也会对3-5项目感到困难。相反,声明为存储过程一部分的单个输出字段非常简单易于处理。

第1项和第1项2更容易实现,但我不熟悉iBatis周围的工具,对不起。我不认为iBatis或Oracle确实与您的问题有很大关系。

您最好的选择可能是说服您的DBA更有帮助和/或积极地运行差异以检测并手动处理存储过程更改。