spring数据存储库的具体用途是什么?

spring数据存储库的具体用途是什么?,spring,spring-data,Spring,Spring Data,最近,在spring的mongotemplate中,他们谈到了存储库()。比如说,一个CRUD存储库,它是为所有CRUD操作创建的存储库吗? 谁能用更简单的术语解释一下,存储库的用途到底是什么?持久化数据完全是关于CRUD(创建/读取/更新/删除),但您可以使用不同的技术来实现这些操作 您提供的链接恰好选择了MongoDB,一个填充NoSQL文档数据库。Spring数据还可以用于关系SQL数据库、对象数据库、图形数据库等 界面设计的美妙之处以及Spring的真正威力在于,您可以将需要完成的内容与

最近,在spring的mongotemplate中,他们谈到了存储库()。比如说,一个CRUD存储库,它是为所有CRUD操作创建的存储库吗?
谁能用更简单的术语解释一下,存储库的用途到底是什么?

持久化数据完全是关于CRUD(创建/读取/更新/删除),但您可以使用不同的技术来实现这些操作

您提供的链接恰好选择了MongoDB,一个填充NoSQL文档数据库。Spring数据还可以用于关系SQL数据库、对象数据库、图形数据库等

界面设计的美妙之处以及Spring的真正威力在于,您可以将需要完成的内容与如何完成的细节区分开来。Spring依赖项注入使得在不同的实现中交换变得很容易,所以您不必过于拘泥于自己的选择

下面是一个带有CRUD操作的简单通用DAO接口:

package persistence;

public interface GenericDao<K, V> {
    List<V> find();
    V find(K id);
    K save(V value);
    void update(V value);
    void delete(V value);
}
包持久化;
公共接口通用DAO{
列表查找();
V find(K id);
K保存(V值);
无效更新(V值);
无效删除(V值);
}
您可以使用HibernateGenericDao:

package persistence;

public class HibernateGenericDao implements GenericDao<K, V> {
    // implement methods using Hibernate here.
}
包持久化;
公共类HibernateGenericDao实现了GenericDao{
//在这里使用Hibernate实现方法。
}

读起来像是重言:“CRUD存储库是所有CRUD操作的存储库吗?”为什么是的,是的……如果我维护CRUD存储库并连接到所有Dao,并使用诸如保存、删除、更新、保存或更新等通用方法,也可以看到这一点。。如果以后我决定选择NoSql解决方案而不是RDBMS解决方案,那只是配置问题。你看到更多这样的例子了吗?除了CRUD之外,我为什么需要创建一些自定义存储库?对不起,我很困惑。DAO是CRUD存储库。听起来您已经有多个DAO与类1:1映射。您可以选择编写一个适用于所有持久类的通用存储库,但不需要两者兼而有之。Hibernate是使用CRUD操作实现DAO的众多选择之一。您可以选择纯JDBC、MongoDB或任何其他方法来代替Hibernate,但它们实现的接口无论如何都是相同的。好吧,它或多或少像一个genericDao,它拥有所有基本的实用程序方法(保存、更新、删除等)。我想,如果有人使用hibernate,他们的代码中肯定会有这个通用dao。对不起,我对这一点一无所知,这真的是同一件事吗,那么这个标记接口的需求是什么呢?它或多或少像一个好的模式,必须包含在他们的代码中,而spring刚刚正式确定了我们以前的方式?错了。选择使用Hibernate并不强制您使用通用接口。它不像Remotable或Serializable那样是一个标记接口。您可以编写一个Hibernate DAO或任何其他没有接口的类。