Java 在通用DAO中容纳特定于对象的存储过程
我正在开发一个Servlet JSP JDBC应用程序。没有Spring/Hibernate——纯JDBC。作为最佳实践,我已经实现了一个抽象工厂DAO类,并且正在使用特定于域对象的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
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接口中调用此存储过程的方法
我想到了两个选择:
提前谢谢 @Satya:谢谢你的编辑!我自己也意识到,选项2不会很优雅,因为它会将JDBC代码放入userbean对象中!