【问题标题】:Oracle PL/SQL data access package code generatorOracle PL/SQL 数据访问包代码生成器
【发布时间】:2013-01-11 07:18:01
【问题描述】:

正如许多在 Oracle 上从事 PL/SQL 开发的工作人员在其职业生涯中所经历的那样,创建包以处理特定表上的数据访问层是很常见的。我的意思是,给定一个表'employee'是创建一个包'da_employee'('da'代表'数据访问')的普遍做法,该包实现诸如ins()之类的例程,以便将一行插入员工,del () 删除一行,upd() 更新,lock() 锁定,...,我可以继续...

包的内容可能会根据需要和个人选择而有所不同,但可以说,一旦为表设计了数据访问包的结构,我计划创建的还有数百个表在我的架构中可能需要基于相同设计的包。

在这一点上,我可以说可以使用存储在数据库中的元数据和包本身的模板自动生成这种包。

我想我不是第一个得出这个结论的人,所以我想知道周围是否有这样的代码生成解决方案,无论是商业的还是免费的。

【问题讨论】:

  • 我认为 TAPI(表 API)通常是一个糟糕的选择,最好避免使用它们。您的 API 将更适合给定的流程。例如updateEmp(...) 如果我们想更新其中一列,有时是其中的 3 列怎么办?你是否超载,或者有一些逻辑表明如果输入为空,不要更新该列(如果是这样,你的 api 要么太长,要么使用很差的动态 SQL)
  • 这是常见的做法吗?如果您正在操作一个只需要单行插入/更新(删除?)的 Web 服务,但我做所有事情都是批量的……如果您需要这样做,这应该很容易为自己编写。不过看起来会很可怕;为什么不直接写你需要的包呢?总会有您想做的其他事情/检查。

标签: oracle database-design code-generation data-access-layer


【解决方案1】:

你可以试试

https://code.google.com/p/tapig/

我简单地看了看.. 但它有一个问题,因为我的表名中带有 _

【讨论】:

    【解决方案2】:

    Toadworld 不再提供 CodeGen 实用程序。我现在正在研究在 PL/SQL Challenge 站点 (plqlchallenge.com) 上为 TAPI(以及更普遍的数据访问层)生成提供替代方案。 Rick,我很想和你谈谈你的 - 请随时通过 steven@stevenfeuerstein.com 与我联系。

    关于是否使用TAPI的问题:我认为最重要的是先关注基本原理,然后寻找最佳解决方案。

    对我而言,关键原则是避免在我的应用程序中重复 SQL 语句,从而更容易优化、维护和增强这些语句。因此,数据访问层至关重要。我们中的一些人构建了在单个表上执行 DML 的应用程序,因此我们发现 TAPI 很有用。其他人则不喜欢“XAPI”(事务 API)。

    这些天来,我编写的包包含两者的一部分 - 并尽可能多地生成它。

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 2020-03-31
      • 1970-01-01
      • 2013-10-24
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多