Java - Spring数据访问对象实现

标签 java spring interface dao implementation

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

我有一个“基本”DAO 接口(interface),其中列出了所有 CRUD 操作:

public interface BaseDao {

    public boolean create(Object obj);

    public List<Object> read();

    public boolean update(Object obj);

    public boolean delete(Object obj);

}

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

public interface ArticleDao extends BaseDao {

    public List<Article> getArticlesByAttribute(String attribute);

}

最后是实现该接口(interface)的存储库:

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
    }
}

所以这个想法很简单:

我希望每个存储库都实现所有 CRUD 操作+“特定 dao 接口(interface)中的方法”

但是我收到以下错误:

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

等等..

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

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

感谢和问候

最佳答案

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

关于Java - Spring数据访问对象实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772366/

相关文章:

java - textarea 不适用于具有值的文档加载

Objective-C:如何检查协议(protocol)对象是否是特殊类

java - 一个接口(interface),其中所有方法具有多个实现类,每个实现类实现该接口(interface)中方法的子集

java - 当按下 f11 时,如何使窗口全屏显示?

Java 可变数组长度

Spring 安全 OAuth2 : Purge TokenStore

java - hibernate 异常: unexpected token: HAVING

java - 我创建了一个方法,但 Java 没有看到它 - Java

java - 使用 Java 的 Google 数据存储模拟器(不使用 GAE)

JavaScript:如何弥补委托(delegate)模式中接口(interface)的不足?