Java 在通用DAO中容纳特定于对象的存储过程

Java 在通用DAO中容纳特定于对象的存储过程,java,jdbc,dao,abstract-factory,Java,Jdbc,Dao,Abstract Factory,我正在开发一个Servlet JSP JDBC应用程序。没有Spring/Hibernate——纯JDBC。作为最佳实践,我已经实现了一个抽象工厂DAO类,并且正在使用特定于域对象的DAO接口。下面是一个例子: public abstract class DAOFactory { public abstract ContactDAO getContactDAO(); public abstract UserDAO getUserDAO(); ... } publi

我正在开发一个Servlet JSP JDBC应用程序。没有Spring/Hibernate——纯JDBC。作为最佳实践,我已经实现了一个抽象工厂DAO类,并且正在使用特定于域对象的DAO接口。下面是一个例子:

public abstract class DAOFactory {
     public abstract ContactDAO getContactDAO();
     public abstract UserDAO getUserDAO();
     ...
}

public interface ContactDAO {
   public int insertContact();
   public Contact findContact(String ContactId );
   ...
}

public interface UserDAO {
   public int insertUser();
   public User findUser(String UserId );
   ...
}

public class MySQLContactDAO implements ContactDAO {...}

public class MySQLUserDAO implements UserDAO {...}

public class Contact {}  // contactbean

public class User {}  // userbean
如您所见,所有接口中的所有方法都是相似的。(我本可以定义一个我知道的通用DAO接口,但为了简单起见,我放弃了这个想法)

但是在我的用户表中,我添加了一个存储过程,这是一种用户身份验证辅助方法。我会在登录页面调用包装器方法

   boolean isValidUser (String uname, String pwd){
       // call to stored procedure here 
   }
到目前为止,只有用户表具有这样的存储过程。考虑到所有DAO接口都应该有相同/相似的方法,我如何适应在UserDAO接口中调用此存储过程的方法

我想到了两个选择:

  • 只需将isValidUser()方法添加到UserDAO接口,并在具体类中实现

  • 将isValidUser()方法添加到User(userbean)类

  • 我的问题是:从“设计/实施/维护”的角度来看,上述两个选项是否有效?如果是,哪一个更好

    如果你能提出一些替代方案,我将非常感激


    提前谢谢

    @Satya:谢谢你的编辑!我自己也意识到,选项2不会很优雅,因为它会将JDBC代码放入userbean对象中!