Java - Spring数据访问对象实现

时间:2016-11-23 19:06:19

标签: java spring interface dao implementation

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

我有一个"基地" DAO接口,列出所有CRUD操作:

public interface BaseDao {

    public boolean create(Object obj);

    public List<Object> read();

    public boolean update(Object obj);

    public boolean delete(Object obj);

}

接下来我有&#34;具体&#34; DAO接口,扩展自&#34; base&#34;之一:

public interface ArticleDao extends BaseDao {

    public List<Article> getArticlesByAttribute(String attribute);

}

最后,Repository实现了接口:

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操作+&#34;来自特定dao-interface的方法&#34;

但我收到以下错误:

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

等。

所以这可能是因为我将Object定义为界面中的参数和&#34;文章&#34;作为实际实现中的参数..

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

谢谢和问候

1 个答案:

答案 0 :(得分:2)

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