常见的数据库/ dao方法应该是静态的吗?

时间:2014-01-21 15:54:19

标签: java hibernate design-patterns static

我的方法在不同位置的代码中使用了3-4次。通常会为此引入静态实用方法,我也这样做了。

但我想知道这是一个好习惯,如果这个静态方法执行一些数据库/ dao逻辑?将以下内容作为伪代码示例:

class DaoUtiliy {

    public static void updateToDB(List a, List b) {
        Dao dao = new Dao();
        dao.open(); //begin transaction     

        //create some variables using the list a, that are used to fetch the db entry:
        String time, String date; //some more
        Entity entity = dao.find(time, date);

        //update anything in that entity;
        entity.setProperty(b.get(0));

        dao.close(); //commit transaction
    }   
}

你还会把它放在静态方法中吗?或者更确切地说,从需要的地方创建一个new DaoService().updateToDB(a, b); anc调用这个方法?

1 个答案:

答案 0 :(得分:5)

我更喜欢DAO中的非静态方法,原因如下

  1. 使它们非静态使用Spring(
  2. )等框架注入值更容易
  3. 编写单元测试用例对于静态方法并不容易,因为它们无法被覆盖
  4. 此外,如果您想扩展DAO的功能,则无法覆盖静态方法。