早些时候我和一些同事讨论了在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)都一样吗?
感谢您的时间。