java中dao查询_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 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

有关更多信息,请查看:

标签:dao,spring,java,spring-jdbc

来源: https://codeday.me/bug/20191121/2053945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值