java-3级架构中的DAO模式.如何处理复杂的查询
作者:互联网
我目前正在使用3层ui-service-dao开发应用程序.在dao级别,我正在使用Spring的jdbcTemplate.到目前为止,还不错,但是我遇到了一种情况,我希望对此有更多的了解
刚开始,我的DAO仅具有简单的CRUD方法.在服务级别,我正在检查输入值,并委派给DAO,还处理事务.
现在我需要下面这样的东西
清单getAllBooksByAuthorName(字串名称)
我的问题是放在哪里?在使用sql的DAO层中或在服务中使用CRUD的核心方法并仅在java中进行计算
我宁愿倾向于尽可能多地使用sql,而不是在服务层进行计算.但是现在看来,对于每种新方法,我还需要更改DAO的接口,并在服务的接口中创建对应的方法.然后,服务只不过是委派者和参数检查器.感觉不对.
解决方法:
您的观点是正确的,但我对您的疑问并没有太多了解.通常,DAO模式会减少业务逻辑和持久性逻辑之间的耦合.
public interface BooksDAO{
public boolean save(Book book);
public boolean update(Book book);
public boolean findByBookIsbn(int isbn);
public boolean delete(Book book);
//here is what you want
public List<Book> getAllBooksByAuthorName(String name);
}
现在,您可以为BooksDao实现不同的实现,例如HibernateBooksDaoImpl或JdbcBooksDAOImpl. DAO模式使编写隔离的junit测试变得容易,并且执行速度更快.
如果您有复杂的查询,您仍然可以使用dao模式.基本上,无论是简单的jdbc(可以使用sql)还是spring jdbc模板(仍然可以使用sql)还是休眠使用条件,都有一种在实现端编写复杂查询的方法.
看到:
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Criteria.html
有关更多信息,请查看:
http://javarevisited.blogspot.com/2013/01/data-access-object-dao-design-pattern-java-tutorial-example.html
http://www.oracle.com/technetwork/articles/entarch/spring-jdbc-dao-101284.html
标签:dao,spring,java,spring-jdbc 来源: https://codeday.me/bug/20191121/2053945.html