支持 Final 字段的 Java 持久性提供程序

2023-11-24

我对 Java 很陌生,但我已经养成了尽可能使用 Final 声明不变性的习惯,我认为这是一件好事。 (考虑 f#)

我读到 JPA 不支持最终字段。休眠、TopLink?我不确定这些,但我现在更喜欢 JPA。

从理论上讲,是否有可能(比如说通过反射)在创建后修改最终字段?我的猜测是......不:)

对于持久性解决方案来说,当然可能的是支持带参数的构造函数。至少我认为没有理由使这成为不可能。我想映射会有点棘手。 这是一个替代解决方案。

建议?

EDIT:我不熟悉不可变的确切定义,所以我在这篇文章中直观地使用了它。这里声明不可变性意味着声明一个字段不能被改变。很抱歉对于这个误会。


对象不变性(注意不可变对象和声明字段为final之间的区别——只有所有字段都是final的,对象才是不可变的,因此对象的状态在创建后不能改变)是一个非常敏感的话题。我自己很喜欢它们,hibernate 通过 @Immutable 支持它们。

不知道它在 JPA 2 中的状态,但回答有关最终字段的问题:您可以使用反射更改它们的值 - 但反射在 Java EE 环境中受到严重限制。

为了阐明主要问题:如果您的 POJO 是不可变的,那么持久性解决方案将如何重新创建对象?假设您有两个 Final int 字段,以及一个用于初始化它们的构造函数。持久层不能有任何关于它们的顺序或名称的信息(因为字段和参数名称在编译过程中被删除)。

Koshuke 发布了一篇关于此的博客(与支持不可变 bean 的 JAXB 相关),但现在找不到它。

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

支持 Final 字段的 Java 持久性提供程序 的相关文章

随机推荐

  • 使用 Jena 获得对类的 OWL 限制

    使用披萨本体论 我希望能够查找所有的配料American比萨 如果我在 Prot g 中打开本体 我可以看到American披萨有以下限制 hasTopping some MozerellaTopping hasTopping some T
  • R 使用 readHTMLTable 时出错

    我正在使用以下代码 url http finance yahoo com q op s DIA m 2013 07 library XML tabs readHTMLTable url stringsAsFactors F 我收到以下错误
  • 是否可以在 Mac OS 上调试 x64 程序集?

    我希望能够在我的 Mac 上使用 Sierra 10 12 4 编写和调试 x64 程序集 人们可能会认为这不会是一个特别困难或晦涩的愿望 但尽管花费了很多时间的努力和大量的在线搜索 我仍然没有成功 而且我还没有找到其他人有这样的愿望 我更
  • android中如何给每个用户免费试用期

    我想发布一个 Android 应用程序 试用期为 15 天 之后将收取终身订阅费 我看到 Play 商店开发者帐户中有一个试用期选项 所以我的问题是 如果用户在试用期内取消订阅 之后用户将能够使用该应用程序吗 我不想在我的 apk 文件中更
  • 在第一个索引处插入新元素到集合时,如何使用 PageTabViewStyle 修饰符更新 TabView 中的 SwiftUI 的 ForEach

    这是使用时的一个非常具体的问题ForEach in a TabView with PageTabViewStyle修饰符 每次我在数组的开头插入一个元素时 我的应用程序都会崩溃 我得到了一个 尝试从更新前仅包含 11 项的第 0 部分中删除
  • 用作睡眠的空 for 循环会被优化掉吗? [复制]

    这个问题在这里已经有答案了 我正在查看一些要审查的代码 并遇到了这样的繁忙等待 int loop us 32 int x for x 0 x
  • PerformSelector 可能会导致泄漏,因为它的选择器未知

    我收到 ARC 编译器发出的以下警告 performSelector may cause a leak because its selector is unknown 这就是我正在做的 controller performSelector
  • 来自 Androidcamera2 API 的图像数据在 Galaxy S5 上翻转和压缩

    我正在实现一个应用程序 该应用程序对来自相机的实时图像进行实时图像处理 它使用现已弃用的 android hardware Camera 进行工作 但有限制 为了提高灵活性和性能 我想使用新的 android hardware camera
  • Webpack-5 - Webpack 尝试解析 scss(或 css)中图像的根相对路径并失败

    升级到 Webpack 5 后出现此错误 Error Can t resolve path to image jpg in app path to module module 问题在于用于 css 背景的图像 其中文件未存储在存储库中 并且
  • scrapy允许所有域

    I saw this发布以使 scrapy 抓取任何不受允许域限制的网站 有没有更好的方法 例如在允许的域变量中使用正则表达式 例如 allowed domains 我希望除了侵入 scrapy 框架之外还有其他方法来做到这一点 根本不要设
  • 两个 TCP 套接字之间基于内核 (Linux) 的数据中继

    I wrote TCP中继服务器其工作原理类似于对等路由器 超级节点 最简单的情况是两个打开的套接字以及它们之间的数据中继 客户端 服务器 客户端 然而 服务器必须服务大约 2000 个这样的 A B 对 即4000个插座 有两种众所周知的
  • PHPStorm / Webstorm,如何使用关联程序打开文件

    我是 Webstorm PHPStorm 的新用户 在使用此 IDE 之前 我使用 Netbeans 要打开 xds 文件 这是一种文本文件 您可以像打开 js 文件一样打开它 并在编辑器中对其进行编辑 在 Netbeans 中 您必须选择
  • 如何查找文件“data.txt”中存储的特定文本并且该文本仅出现一次

    我查找的行存储在文件 data txt 中 并且是唯一只出现一次的文本行 我如何使用 linux 找到该特定行 这有点旧 但我想你正在寻找这个 cat data txt sort uniq u 这将显示文件中仅出现一次的唯一值 如果您问的话
  • 通过pdo停止查询

    我正在使用 PDO 用户应该可以选择停止之前触发的请求 例如 现在我单击 生成报告 但是在请求之后我忘记选择另一个字段 导致报告无用 所以我需要取消请求并提出新的请求 基本上 如何取消正在运行的 MYSQL 查询 if isset POST
  • 如何将 Facebook 应用程序与现有粉丝页面链接

    现在 Facebook 已经降低了应用程序的登陆页面的价值 如何让我的应用程序指向其登陆页面的粉丝页面 我已经检查了 高级 选项卡和联系人 但没有地方可以看到将我的粉丝页面列为链接到我的应用程序 根据这篇博客文章来自十二月 新应用程序可以创
  • 如何在 ColdFusion 中循环查询列

    我在 CFC 中有一个查询 该函数本身包含一个简单的查询
  • 如何覆盖Spring Cloud Ribbon中的ribbon.serverListRefreshInterval默认值?

    我编写了一个简单的 Spring Cloud Ribbon 应用程序 来调用在 Eureka 中注册的 REST 服务 但如何覆盖ribbon serverListRefreshInterval价值 默认值是30秒 我想减少时间间隔 提前致
  • 带颜色渐变填充的 Matplotlib 矩形

    我想在我的轴实例中的任意位置 任意尺寸绘制一个从左到右渐变颜色填充的矩形 ax1 坐标系 我的第一个想法是创建一个路径补丁并以某种方式将其填充设置为颜色渐变 但根据这个帖子没有办法做到这一点 接下来我尝试使用颜色条 我创建了第二个轴实例ax
  • 在matlab中,如何在图像上绘制网格

    如何在图像上绘制网格 它应该成为该图像本身的一部分 它应该能够在图像本身上显示一些行和列 可以指定行和列的线 事实上 一些研究论文讨论有关图像扭曲的结果的方式让我感到鼓舞 其中一个链接是这样的 http www hammerhead com
  • 支持 Final 字段的 Java 持久性提供程序

    我对 Java 很陌生 但我已经养成了尽可能使用 Final 声明不变性的习惯 我认为这是一件好事 考虑 f 我读到 JPA 不支持最终字段 休眠 TopLink 我不确定这些 但我现在更喜欢 JPA 从理论上讲 是否有可能 比如说通过反射