【问题标题】:Java - Spring data access object implementationJava - Spring 数据访问对象实现
【发布时间】:2016-11-23 19:06:18
【问题描述】:

在我当前的 spring 设置中,我想实现一个稍微不同的架构,这是我的设置:

我有一个“基础”DAO 接口,它列出了所有 CRUD 操作:

public interface BaseDao {

    public boolean create(Object obj);

    public List<Object> read();

    public boolean update(Object obj);

    public boolean delete(Object obj);

}

接下来我有“特定”DAO 接口,它从“基础”接口扩展:

public interface ArticleDao extends BaseDao {

    public List<Article> getArticlesByAttribute(String attribute);

}

最后是实现接口的存储库:

public class ArticleDaoImpl implements ArticleDao {

    public boolean create(Article article) {
        // code
    }

    public List<Article> read() {
        // code
    }

    public boolean update(Article article) {
        // code
    }

    public boolean delete(Article article) {
        // code
    }

    public List<Article> getArticlesByAttribute(String attribute) {
        // code
    }
}

所以这个想法很简单:

我希望每个 Repository 都实现所有 crud 操作 +“来自特定 dao 接口的方法”

但我收到以下错误:

ArticleDaoImpl is not abstract and does not override
abstract method delete(java.lang.Object) in BaseDao

等等。

所以这可能是因为我在接口中将Object定义为参数,而在实际实现中将“Article”定义为参数..

有人知道我如何正确地遵循这种模式吗? 我应该考虑使用泛型吗?

感谢和问候

【问题讨论】:

    标签: java spring interface dao implementation


    【解决方案1】:

    没有。您应该使用 Spring Data JPA/MongoDB 等。它将使您的大部分样板代码消失。说真的 - 忘记 DAO 并使用 Spring Data JPA:https://spring.io/guides/gs/accessing-data-jpa/

    【讨论】:

    • 无需重新发明轮子 ;)
    • mhm,但是 hibernate 呢,我如何在这种情况下集成它?我的意思是,我安装 hibernate 只是为了查询/保存数据,我现在还需要它吗?
    • 最好只遵循 Spring Data JPA 教程(使用 Hibernate)以获得完整但清晰的 Hibernate 配置。如果您使用的是 Spring Boot,那么这将是一件轻而易举的事。看看这个例子:github.com/netgloo/spring-boot-samples/tree/master/…
    • 嘿,是的,你是对的,但以防万一......你能参考一下如何实现我上面的问题吗?使用泛型?
    猜你喜欢
    • 2010-09-12
    • 2012-12-01
    • 2013-10-09
    • 2012-07-15
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多