【发布时间】: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