使用 JPA 实体作为域模型是一个好习惯吗?

2024-04-24

或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问? 两种方法的优缺点是什么?谢谢!


这确实取决于您对域进行编码的方式。

一般来说(在 Java 中)我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性。此类 DTO 将匹配数据库表,并将在自定义存储库中使用

  • 将向客户端公开语义 API
  • 将针对此类 DTO 运行查询
  • 将使用工厂初始化域对象以返回给客户端

这种方法使领域模型真正与数据库模式解耦,以便您可以独立地发展两者。这种方法的缺点是您需要编写更多代码,但我发现编写维护此类代码非常容易且便宜。

在实体上使用 JPA 注释是一种非常常见的方法,但随着领域模型的发展并变得更加复杂,我自己的经验是,您必须面对比其他解决方案昂贵得多的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JPA 实体作为域模型是一个好习惯吗? 的相关文章

  • 没有名为 EntityManager 的持久性提供程序

    我有我的persistence xml使用相同的名称TopLink在下面META INF目录 然后 我的代码使用以下方式调用它 EntityManagerFactory emfdb Persistence createEntityManag
  • 有界上下文、子域和通用语言

    a 对于包含两个或多个子域的 BC 存在概念重叠的可能性 甚至更糟糕的是 相同的概念 由其中几个子域使用 可能会被每个子域以不同的方式解释 理解 无论如何 如果 BC 确实包含许多子域 它是否应该提供几种通用语言 每个子域一种 或者所有子域
  • 如何在表上选择并计算某些值的出现次数

    我请求你的帮助 因为我不太了解 SQL 我需要计算表列中某些值的出现次数 以达到类似统计表的效果 如下图所示 需要的结果 Comment 我的结果表需要有前两列 国家和站点 来自第一个表 Violations 接下来的 5 列将包含状态表中
  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 如何在JPA中反映“嵌套集”模型

    很好用嵌套集 http www evanpetersen com item nested sets html对于分层数据 但在这个设计中 如果删除或插入一些数据 您应该始终计算右侧和左侧节点 此外 您没有任何外键 我如何用 JPA 反映这个
  • JPA 2 - 外键仅包含复合主键中的一个字段?

    我在 JPA 2 Hibernate 中获取复合主键和外键时遇到问题 我正在尝试创建一个包含国家和省份的简单场景 国家实体 Entity Table name country public class Country extends Dom
  • Hibernate不生成级联

    我有一套hibernate hbm2ddl auto创建以便 Hibernate 为我在 mysql 中创建表 但是 休眠似乎没有正确添加Cascade关于表中的参考文献 然而 当我删除一行 并且我有一个删除级联作为休眠注释时 它确实有效
  • 如何将带有子查询的 JPQL 转换为 Criteria API 等效项?

    有一个由 5 个实体组成的简单对象模型 Company 组织 Address Club Group 公司与单个组织相关联 团体和俱乐部也与单个组织相关联 它们是单向的 这意味着组织不包含对其所有者的引用 一个组织可以有 0 个或多个地址 子
  • 为什么 JPA/hibernate 不能映射到 MySQL blob 类型?

    我收到以下错误 Caused by org hibernate HibernateException Wrong column type in TestTable for column PAYLOAD Found blob expected
  • JPA如何为@OneToMany关系的列添加唯一约束,例如用户名

    我有一个班级Site代表一个网站和一个类User A Site可以有多个Users class Site private int site ID OneToMany with a join table private List
  • 在应用程序中搜索对象的设计模式

    需要一些有关设计模式的帮助 我正在创建一个应用程序 该应用程序在存储在单独表中的数据库中的对象上具有不同类型 例如 我有 5 种对象 A B C D E 我在数据库中有 5 个不同的表来存储每个对象 现在 我想在我的应用程序中实现搜索功能
  • 删除然后创建记录会导致 Spring Data JPA 出现重复键冲突

    因此 我有这样的场景 我需要获取标头记录 删除它的详细信息 然后以不同的方式重新创建详细信息 更新细节太麻烦了 我基本上有 Transactional public void create Integer id List
  • createNativeQuery 设置参数

    我有以下内容 其中包含 NativeQuery 我需要在其中设置参数 但有些事情是错误的 因为未设置参数 因此查询是 SELECT movieId title genres FROM movies where title like 所以返回
  • Spring JPA自定义查询与WHERE条件中的参数组合?

    如何在 Spring Data 中编写至少使用三个参数之一的 JPA 查询 我有这三个参数 Id PK Name Surname 客户端必须至少提供这三个参数之一 我想通过这些非空参数找到用户 是否可以为我的存储库创建此类自定义查询 或者我
  • 使用流程管理器(又名 saga)在同一有界上下文中跨聚合根实现最终一致性

    假设您的有界上下文中有两个聚合 它们之间存在一些约束 使用 DDD 这些内部聚合约束不能在同一事务中强制执行 即聚合边界是事务边界 您是否会考虑使用 Microsoft CQRS 旅程中所谓的 流程管理器 来协调同一有界上下文中的两个聚合
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • Hibernate/JPA 在启动时不验证数据库架构

    由于某种原因 hibernate 无法捕获诸如将实体映射到不存在的表之类的问题 我的 persistence xml 文件看起来像这样
  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti
  • 当我尝试构建 JPQL 连接查询时,为什么会得到无效路径?

    我使用的是 JPA 2 1 Hibernate 4 3 6 Final 和 MySQL 5 5 37 如何编写执行联接的 JPQL 查询 我在下面尝试 final String jpqlQuery SELECT m FROM Message

随机推荐

  • C++ 中的向量存储

    我希望存储一个大的 d 维点向量 d 固定且小 如果我定义一个Point as vector
  • Notepad++ 在每行添加数字

    我在文本文件中有以下数据 p 1 p 1 p 1 p 1 等等 我在 Notepad 中打开该文件 我该如何将其更改为 p 1 p 2 p 3 p 4 etc You can use the Column Editor mode First
  • PopupView 没有显示?

    这是 XML 只是一个网络视图
  • Mysql InnoDB性能优化和索引

    我有 2 个数据库 需要链接两个大表之间的信息 每个表超过 300 万个条目 并且不断增长 第一个数据库有一个表 pages 用于存储有关网页的各种信息 并包括每个页面的 URL URL 列是 varchar 512 并且没有索引 第二个数
  • C 语言标准集合在哪里?

    我现在致力于学习 C 我擅长 Python PHP Bash 但我决定我不能流利地使用 C 但是我无法想象在没有列表和哈希的语言中工作 也许我 我只是有点操之过急 但肯定有 标准 集合库 我在 GNU 标准库中没有看到任何内容 有什么建议吗
  • 使用 Jenkins 凭证插件以纯文本形式显示密码

    我正在尝试使用 Jenkins Credentials 插件来获取用户输入并在 Jenkinsfile 中使用它进行处理 由于密码字段高度敏感 我希望凭据插件能够屏蔽密码 使其不显示在控制台输出中 但是似乎密码以纯文本形式显示 我注意到一个
  • 如何在不使用 MATLAB 的情况下打开 .mat 文件?

    我在Matlab中做了一个项目 现在我已经卸载了Matlab 现在 我需要一些我的项目的参考 我留下了所有 mat 文件 我正在尝试在记事本中打开它们 并且我在那里得到了 unicode 字符 我的问题很简单 如何在记事本或某些文字处理器中
  • 如何将 .pb 文件转换为 .h5。 (张量流模型到keras)

    我已经使用重新训练了我的模型tensorflow现在想使用keras以避免会话内容 我怎样才能转换 pb文件至 h5 import tensorflow as tf from tensorflow keras models import s
  • 使用 IAM 角色承担的 Terraform

    我一直在使用 terraform 的访问 密钥来创建 管理我们在 AWS 中的基础设施 但是 我尝试改用 IAM 角色 我应该能够使用我的帐户中的角色并承担另一个帐户中的角色 并且应该能够运行计划 应用等以在另一个帐户中构建基础设施 有什么
  • Node.js 承诺请求返回

    我使用 promis 模块从请求模块返回 json 数据 但每次运行它时 它都会给我这个 Promise 45 0 81 0 65 null 54 null 我无法让它工作 有人知道问题所在吗 这是我的代码 function parse r
  • 无法上传 targetSdkVersion 为 30 的签名 apk

    我生成了一个签名的 apk 目标 sdk 版本为 30 Android 11 我知道它尚未正式发布 但我的应用程序已准备好接受新的更改 我正在尝试将其上传到 google play 控制台 但遇到错误 您上传的 APK 签名无效 了解更多信
  • 在开发中运行时,Google Chrome 中未设置 ASP.net core auth cookie

    我的解决方案中有三个应用程序 全部内置于 asp net core 1 MVC 6 中 应用程序 1 是一个 MVC 应用程序 用于验证用户身份 应用程序 2 是一个 Angular SPA 应用程序 是解决方案中的主要应用程序 App 3
  • 未找到指定的 VM 安装:类型标准 VM,名称 jre7

    未找到指定的 VM 安装 类型标准 VM 名称 jre7 您在 Eclipse 中构建 ant 文件时遇到过这个问题吗 那么这篇文章适合您 删除并重新创建工作区并不是解决方案 有一个简单的解决方案可以解决此问题 而无需重新创建工作区 右键单
  • 由于文件大小为零,无法连接到 NetBeans 发行版

    我最近在 Windows 10 PC 上重新安装了 Netbeans IDE 以恢复一些不相关的配置 当我尝试检查新插件以便能够下载 Sakila 示例数据库时 我收到这个错误 https i stack imgur com 1RqFL p
  • Lucene 3 上的“令牌”列表

    我是 Lucene 的新手 我开始学习版本 3 分支 但有一件事我不明白 显然是因为我在该主题上没有经验 在 Lucene 2 9 中 如果我想要一个令牌列表 我会创建一个 Token 类的 ArrayList 例如 ArrayList 这
  • 如何创建 pinterest 风格隐藏/取消隐藏导航/标签栏?

    如何创建隐藏 取消隐藏导航栏 就像 pinterest 和许多其他应用程序所做的那样 我知道基本的想法是使用 UIScrollView 委托并检测我是否向上或向下滚动并基于此显示导航栏 那么 如果导航栏隐藏 我是否还应该调整导航控制器视图高
  • 无法修改 char 数组

    考虑以下代码 char message foo void main void message bar 为什么 MPLAB IDE v8 63 中出现语法错误 我只是想改变字符数组的值 声明后不能像这样使用字符数组 如果您想为字符数组分配新值
  • 如何通过反射判断 C# 方法是否为 async/await?

    e g class Foo public async Task Bar await Task Delay 500 如果我们反思这个类和方法 我如何确定这是否是一个实际的 async await 方法 而不仅仅是一个恰好返回任务的方法 cla
  • 获得正确的图像旋转[重复]

    这个问题在这里已经有答案了 我有一个简单的问题 当我将图像加载到 Windows 窗体时PictureBox有些图片是旋转的 有些则不是 基本上 用户选择带有OpenFileDialog当选择图片时 private void OpenFD
  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将