首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我需要为哪些实体创建Spring数据存储库?

我需要为哪些实体创建Spring数据存储库?
EN

Stack Overflow用户
提问于 2015-09-08 18:20:32
回答 2查看 2.7K关注 0票数 5

在Spring Data JPA的“入门”示例中,我们创建了一个扩展CrudRepository的接口。但是,它只处理一个实体:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.data.repository.CrudRepository;

interface MyEntityRepository extends CrudRepository<MyEntity, Long> {
  // methods...
}

在真实的应用程序中,有许多实体(表),我们需要对它们执行CRUD操作。将Spring Data JPA存储库与多个(相关或不相关)实体一起使用的正确方式是什么?

我是否必须为每个实体创建接口并逐个自动连接它们(这听起来非常疯狂)?

EN

回答 2

Stack Overflow用户

发布于 2015-09-11 20:43:29

Spring Data使用领域驱动设计中定义的存储库概念。存储库基本上表示聚合根的集合,而聚合根又是您将访问的一些实体,并对其他实体实施业务约束。例如,如果你有一个由LineItem组成的OrderOrder将是聚合根,因为它控制着LineItem的生命周期等等。因此,你应该为Order定义一个存储库,而不是为LineItem定义一个存储库。因此,到目前为止,你并不是为所有实体创建存储库。它基本上是域建模中决定哪些实体成为聚合根的重要部分。

另一个方面是,存储库通常由持久性机制支持,您不希望将业务逻辑直接编码到持久性API以保持其可测试性,而不必处理持久性API。这意味着,存储库将包含查询方法,这些方法基本上表示集合中所有聚合根的子集,并由特定于存储的查询实现支持。这只能通过聚合根的方式来实现。

第三也是最后一个方面是,存储库可以帮助你更容易地限制对持久化操作的访问,因为你可以使用包范围来强制客户端甚至使用专用服务,并且基本上隐藏特定包中特定域对象的所有持久化操作。使用像EntityManager这样的通用持久性API,您将失去对谁从系统中的任何点实际读取内容的控制,因为它可以在持久性上下文中持久化每个类型。

总而言之:存储库表示聚合的集合,并允许访问该集合的专用子集。Spring Data使得创建它们尽可能简单,而替代方案在架构上不那么可取(参见上面的推理)或更麻烦(如果它们必须手动实现)。您为哪些实体创建存储库取决于您对域进行建模的方式,其中哪些实体是聚合根。

票数 14
EN

Stack Overflow用户

发布于 2015-09-08 18:49:08

你是对的。对于您希望使用Spring数据的每个实体,您需要创建一个接口来扩展其中一个存储库接口,然后将该接口自动绑定到您的类中。对于要执行crud/query操作的每个实体,您只需要其中一个。如果包含在通过级联关系创建/管理的另一个实体中的实体,则不需要显式地为该实体创建存储库。

就您的观点而言,必须为每个实体创建一个接口并对其进行自动绑定似乎有点繁琐,但这就是Spring Data的设计方式,也是它能够自动为您生成数据访问代码的原因。如果你想写你自己的数据层,你显然不需要这么做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32464680

复制
相关文章
如何验证?用户如何验证自己是否遭遇了DNS污染?
DNS污染指的就是网域服务器缓存发生污染,也是一种域名服务器缓存投毒现象。DNS污染发生是由于一部分有意识或者没有目的性制造出的域名服务器数据包,使得域名指向错误IP地址。通常情况下,在互联网中有可信赖的网域服务器,出于减轻网络流量压力的情况,域名服务器会将上游的域名服务器拥有的解析记录进行缓存,这样下次有别的访问机器要解析域名时,就可马上提供访问,但是一旦这些有关网域的局域域名服务器的缓存遭遇污染,会牵连到网域内的计算机引导到错误的服务器。接下来,亚洲云为您分享如何检测自己是否遭遇DNS污染!
会长君
2023/04/26
3.3K0
用户验证
用户验证是指在收到用户请求后进行处理前先判断用户的认证状态(如登陆状态),若通过验证则正常处理,否则强制用户跳转至认证页面(如登陆页面)
星哥玩云
2022/09/14
9010
用户验证
JavaScript 验证 API
input 元素的 validity 属性包含一系列关于 validity 数据属性:
陈不成i
2021/07/19
5770
API参数如何验证?别纠结,拿去用就是
打造的那款轮子可以使研发人员,不再纠结参数校验,通过简单的配置就可以完成校验;可以腾出更多时间,去完成业务代码的编写;充分达到验证与业务剥离。
botkenni
2022/12/07
5200
API参数如何验证?别纠结,拿去用就是
API参数如何验证?别纠结,拿去用就是
关注“一猿小讲”公众号的小伙伴都清楚,在七夕虐狗的日子,我们结合以往的实战项目,重磅推出《七夕,带你生撸一个验证框架》,一起生撸了一个 API 参数验证的轮子。
一猿小讲
2019/08/16
6140
API参数如何验证?别纠结,拿去用就是
用户注册时常用的验证
 1. 手机号校验 function isPhoneNumber(number) { var a = /^13\d{9}|14\d{9}|15\d{9}|16\d{9}|17\d{9}|18\d{9}$/; if (!number.match(a)) { return false; } else { return true; } }; 2. 图片验证码校验 function isImgCodeNumber(str) { var b =
越陌度阡
2022/11/27
7230
高阶应用-用户验证
User是auth模块中维护用户信息的关系模式(继承了models.Model), 数据库中该表被命名为auth_user
星哥玩云
2022/09/14
8380
如何集成验证码短信API到你的应用程序
当你需要为你的应用程序增加安全性和用户验证功能时,集成验证码短信API是一个明智的选择。验证码短信API可以帮助你轻松实现用户验证、密码重置和账户恢复等功能,提高用户体验并增强应用程序的安全性。本文将介绍如何将验证码短信API集成到你的应用程序中,以确保你的用户数据得到保护。
用户10428865
2023/10/25
3140
用神奇的 form 验证 API 来优化你的表单验证
鱼头曾在 『极限版』不掺水,用纯 CSS 来实现超飒的表单验证功能 一文中分享过一个花里胡哨的 纯 CSS 的表单验证功能 。虽然仅仅依赖 CSS 是无法满足我们的日常开发需求的,但是配合着各种原生的 form 验证 API ,情况又不一样了。
陈大鱼头
2021/01/05
1.1K0
【笔记】API 接口签名验证
很多时候在开发对外接口的时候,为了保证接口的安全以及服务的稳定,要对接口的访问添加一定的限制规则。
redszhao
2021/08/09
2.1K0
Flex笔记_验证用户输入
内置验证器 Flex提供了很多内置的验证器,它们都是Validator类的子类。 Flex以扩展Validator类的方式创建了内置验证器,以用于满足常用需求。 Validator组件的重要属性和函数: enabled:Boolean类型,决定是否启用验证功能 required:Boolean类型,是否必填 requiredFieldError:String类型,设置显示给用户的消息 source:Object,设置想要验证的对象(组件) property:String,
LeoXu
2018/08/15
2.9K0
JSP 页面访问用户验证
jsp安全性问题,当别人知道某个jsp文件的网址后就可以跳过登陆页面直接访问该jsp文件了,这样无法禁止外部无权限用户的访问。本文讨论内容是通过权限验证的用户,才可以访问特定的页面。
阳光岛主
2019/02/19
16.6K0
Python 用户验证连接MongoDB
1.登录数据库,创建登录用户密码 [root@mongodb bin]# pwd 12345678 /opt/mongodb/bin[root@mongodb bin]# ./mongo> use adminswitched to db admin> db.createUser({user:"root",pwd:"123456",roles:["root"]})    #创建数据库管理员账号密码Successfully added user: { "user" : "root", "roles" : [ "
py3study
2020/01/07
2.7K0
Apache安全-用户登录验证
当用户访问网站或者网站某个目录时,如果希望用户提供授权才能登录,那么就需要针对该站或者该目录设置登录验证了。apache提供了该功能,可以让我们针对站点或目录设置登录验证。这样用户访问网站时需要提交账号密码才能登录。
星哥玩云
2022/09/15
1.1K0
Tornado(cookie、XSRF、用户验证)
——————–Cookie操作——————– 1、设置Cookie 1、set_cookie(name,value,domain=None,expires=None,path=”/”)
全栈程序员站长
2022/08/31
7460
如何通过IDaaS API同步用户到腾讯会议后台
大部分情况下,开发者集成腾讯会议SDK会选择会前会后页面使用API自定义实现,会中使用SDK自带页面的方式接入自己的APP。因此一个典型的腾讯会议SDK项目开发对接工作主要由通讯录对接(后台开发)、登录鉴权信息生成(后台开发)、SDK接入(客户端开发)、Rest API接入(后台开发)和Webhook接入(后台开发)几部分组成。本文将讲解如何进行通讯录对接开发,也就是IDaaS API接入。
liquid
2023/07/10
3.5K2
PHP开发api接口安全验证
在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。
九霄道长
2021/03/02
1.4K0
django之基于requests API验证
  1.一个认证的key server端 和 client端都必须有这么一个认证key。
菲宇
2019/06/12
1.3K0
点击加载更多

相似问题

Angularjs根据下拉列表中的选择显示div。

24

根据下拉选择更改DIV的内容

13

Javascript:根据下拉列表选择显示/隐藏div

20

根据下拉列表中选择的内容更新div的jQuery

10

根据下拉选择显示div

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文