我正在为我的dao图层寻找更清晰的代码:
我有一个通用的dao界面:
public interface GenericDAO<T> {
T save(T entity);
T merge(T entity);
void delete(T entity);
T findFromId(int id);
List<T> findAll();
}
抽象实现:
public abstract class AbstractGenericDAOImpl<T> implements GenericDAO<T> {
[...]
}
对于每个数据库实体,我有两个文件:
界面:
public interface UserDAO extends GenericDAO<UserPE> { }
具体课程:
@Repository
public class UserDAOImpl extends AbstractGenericDAOImpl<UserPE> implements UserDAO {
[ no code for most entities ]
}
我正在使用这样的弹簧注射:
@Autowired
private UserDAO userDao;
我想将通用dao用于常见实体,例如:
@Autowired
private GenericDAO<MyEntity> myEntityDao;
但是spring不想注入它(NoSuchBeanDefinitionException)而且我不知道如何配置hibernate查询(需要实体类)。
我正在使用: 春季3.1.0 Hibernate 3.6.3 Resteasy 2.3.7
你知道吗?请求阅读。
答案 0 :(得分:2)
如果您使用Spring 4,则可以使用
@Autowired
private GenericDAO<MyEntity> myEntityDao;
如果有GenericDAO的实现而没有做任何其他事情。
春季3期间缺少此类功能。 查看this博文,了解更多详情。
但是,如果将Spring 4引入项目,可能会破坏与RestEasy的集成。这是你需要检查的东西。