当前我有一个单独的maven模块用于我的数据库访问,我的所有DAO类都继承自:
public class GenericDaoImpl<T> extends JdbcDaoSupport implements GenericDao<T> {
}
我的maven模块具有弹簧依赖性:
org.springframework spring-orm
所以典型的Dao类看起来像:
public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {
@Override
public void insert(User user) {
getJdbcTemplate().update("insert into users(...)...");
}
}
我的Dao使用dataSource bean自动装配。
我可以以某种方式制作这个通用,这样我可以继续在我的Spring MVC应用程序中使用它,但如果我需要在cron作业服务类型环境中使用这个库,它会工作吗?(没有必须将春天的应用环境引入图片中。)
答案 0 :(得分:1)
我开始观察以下内容:
GenericDao<T>
,这意味着您可以有不同的实现。GenericDaoImpl<T> extends JdbcDaoSupport
这意味着除非您以手动方式准备所有对象,否则无法在没有任何应用程序上下文的情况下使用您所描述的其他环境。所以我的建议是:
GenericDao<T> extends org.springframework.jdbc.core.JdbcOperations
AbstractGenericDao<T> implements GenericDao<T>
以提供您需要的抽象通用功能。MyEnvGenericDao<T> extends AbstractGenericDao<T>
,负责提供数据源以及您需要的不同方法的底层实现;可以使用直接的Hibernate / OpenJPA实现来直接执行查询。SpringGenericDao<T> extends JdbcDaoSupport implements GenericDao<T>
已经有一个getJdbcTemplate()
来执行您需要的操作,并被委托给Spring JDBC模板。在此方案中,您需要将操作委派给JdbcDaoSupport.getJdbcTemplate()
。与Maven相关,那么您实际上可以为MyEnv
和Spring
实现提供不同的模块,但两者都有一个父级可以访问GenericDao<T>
接口。