DAO应该执行数据库查询还是只准备其语句?

时间:2017-08-22 15:43:18

标签: java dao

早些时候我和一些同事讨论了在Java中创建DAO的最合适方法。有些人认为DAO应该只创建,准备绑定并返回语句,而语句又应该由其他类执行,而其他人认为语句应该由DAO执行。我想知道是否有关于此事的最佳做法。

更具体地说,

选项1,DAO仅构造稍后要执行的语句:

public class MyDAO {
           public static final String SELECT_ALL = "SELECT * FROM my_table WHERE column= ?";

           public static Statement getAll(String param) {
              BoundStatement boundStatement = new BoundStatement(MySession.getInstance().prepareStmt(SELECT_ALL);
              boundStatement.bind(param);
              return boundStatement;
           }
    }

选项2,DAO还执行语句并返回结果集:

public class MyDAO {
               public static final String SELECT_ALL = "SELECT * FROM my_table WHERE column= ?";

               public static ResultSet getAll(String param) {
                  BoundStatement boundStatement = new BoundStatement(MySession.getInstance().prepareStmt(SELECT_ALL);
                  boundStatement.bind(param);
                  return MySession.getInstance().execute(boundStatement);
               }
        }

i)选项1是否比选项2更正确? ii)反过来? iii)选项3是否比1和2更正确? iv)都一样吗?

感谢您的时间。

0 个答案:

没有答案