编写访问数据库的方法的最佳方法是什么?

时间:2011-05-18 04:32:13

标签: design-patterns

在编写另一个充满访问数据库表的方法的类时,我开始想知道如果应用程序可能需要以对负载最小的方式运行,我怎么能最好地编写这些方法。服务器

例如,如果我有查询和显示条形的方法foo,我可以这样写:

function foo (params) {
   this->query_db("select bar from bars where bar != foo");

   for all bars display bar
}

我想知道写一些像

这样的设计是否更好
function foo(bars,params) {
   if(!bars) { bars = this->query_db("select bar from bars where bar != foo"); }

   for all bars display bar
}

在第二种方法中,bar作为数组传递给方法foo,这将允许两件事,a)如果已经在同一实例中查询了条,则避免对数据库的调用b)foo现在可以简单地通过在其他实例中传递数组来使用,您可能希望在不使用数据库中的数据的情况下使用foo

对于使用数据库的程序,这是一种很好的设计方法吗?是否有可能出现类似设计的软件模式?或者......这真傻吗? ;)

1 个答案:

答案 0 :(得分:1)

点a)可能是有效的,只要您知道自己在做什么:在数据库前面实现缓存。这意味着您必须考虑缓存实现者担心的所有常见考虑因素:缓存大小与内存消耗的权衡,保留缓存数据的时间长度,如果底层数据库已更改,缓存可能不再有效,您可能还想考虑使用对象关系映射工具(例如Hibernate),它可能会为您处理一些此类缓存。

我认为你的观点(b)实际上是一种反模式。

一种方法可以概括为“查询数据库并显示结果,或显示一些你传递它而不进行查询的数据”,这是一种乞求重构的方法,因此它只做了一件事。