java - 使用 Resteasy/Hibernate/Spring 简化 DAO 层

标签 java spring hibernate dao resteasy

我正在为我的 dao 层寻找更清晰的代码:

我有一个通用的 dao 接口(interface):

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> {
    [...]
}

对于每个数据库实体,我有两个文件:

接口(interface):

public interface UserDAO extends GenericDAO<UserPE> {  }

具体类:

@Repository
public class UserDAOImpl extends AbstractGenericDAOImpl<UserPE> implements UserDAO {

    [ no code for most entities ]

}

我正在使用这样的 Spring 注入(inject):

@Autowired
private UserDAO userDao;

我想对常见实体使用通用 dao,例如:

@Autowired
private GenericDAO<MyEntity> myEntityDao;

但是spring不想注入(inject)它(NoSuchBeanDefinitionException)并且我不知道如何配置hibernate查询(需要实体类)。

我正在使用: Spring 3.1.0 hibernate 3.6.3 安心2.3.7

你有什么想法吗?

感谢您的阅读。

最佳答案

如果您使用Spring 4,您将能够使用

@Autowired
private GenericDAO<MyEntity> myEntityDao;

如果有 GenericDAO 的实现而不做任何其他事情。

Spring 3 中缺少这种功能。 查看this博客文章了解更多详细信息。

但是,如果您将 Spring 4 引入您的项目,您可能会破坏与 RestEasy 的集成。这是您需要检查的事情。

关于java - 使用 Resteasy/Hibernate/Spring 简化 DAO 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454701/

相关文章:

java - 以编程方式设置 "spring.config.name"属性不起作用

java - android处理程序将变量设置为final

java - Spring无法创建可执行jar

mysql - 尝试更新/保存某些实体时,Spring + Hibernate + Mysql 抛出 SQLGrammarExeception。阅读效果很好

java - 捕获异常后,模拟器仍然显示 "Application has stopped unexpectedly "

java - 我们如何获得该谷歌地图 v2 中所有路线节点的音轨

java - 来自数据库的 Spring Boot Security REST 基本身份验证

java - Testng && Spring上下文单元测试 -> 在测试方法之前和之后执行sql

java - 什么时候 select 比 for 快?

java - Hibernate:如何从查询结果中获取属性?