使用Resteasy / Hibernate / Spring简化DAO层

时间:2014-06-27 14:46:31

标签: java spring hibernate dao resteasy

我正在为我的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

你知道吗?

请求阅读。

1 个答案:

答案 0 :(得分:2)

如果您使用Spring 4,则可以使用

@Autowired
private GenericDAO<MyEntity> myEntityDao;

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

春季3期间缺少此类功能。 查看this博文,了解更多详情。

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