我正在做一门用 Spring Boot 2.19、Hibernate 5.3.12 和 Java 8 编写的 Spring Boot 课程。我使用的是 Java 17、Hibernate 6.1.6 和 Spring Boot 3.0.2。
我整理了许多不匹配的内容,但我找不到解决方案的一个问题是:
@Type(type="org.hibernate.type.BinaryType")
Run Code Online (Sandbox Code Playgroud)
自 Hibernate 6 以来显然已被弃用(我收到错误“无法解析方法类型”)
然而,我发现的解决方案都与二进制数据无关,而且我在文档中找不到任何相关内容..我想因为我对这个领域很陌生,所以当它击中我时我可能看不到答案!
基于我尝试过的各种来源:
@Convert(converter = org.hibernate.type.BinaryConverter.class)
Run Code Online (Sandbox Code Playgroud)
@Type(BinaryType) 
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,IDE 都不会为 Binary 提供任何建议。
我想我可以下载 hibernate 的较低版本依赖项,但我仍然很好奇这在最新的 Hibernate 版本中是如何工作的?
对于这个极其模糊的问题,我深表歉意,但我一直在绞尽脑汁地尝试减小 Pyinstaller .exe 的大小,因此我决定检查更有经验的 Python 开发人员对此类文件的一般文件大小的看法。我一个人工作,所以我真的不知道还能问谁。
我的脚本需要相当多的模块,包括APscheduler(包括SQLAlchemy)、sqlite3、tkinter、datetime、patool、shutil,但最终它是一个相对简单的程序,应该作为Windows后台服务运行(最终目标)。没有使用 pandas、numpy、scipy、keras 或其他大型库。我还为 GUI 添加了 5 个 .png 图像(总共约 350 kB)。这会创建一个 15.5 MB 的 .exe,运行时该程序会占用 30 MB 的物理内存。
所有在线建议都讨论使用Python(而不是Anaconda)为文件创建单独的虚拟环境(我现在正在努力这样做,但它一直很痛苦..)。查看 Pyinstaller 创建的 dist 文件夹,大多数大型 .dll 似乎对于程序的运行至关重要(mfc140u.dll,python37.dll,tcl,tk,multiprocessing,sqlite,..),并且似乎没有是 pandas 或 tensorflow 或其他安装在我的 conda 站点包中的库。我还应该提到这是我的第一个运行程序,所以我认为代码架构并不像应有的那么高效。
特别是 APScheduler 有相当多的依赖项,因此我不确定将其隔离到单个虚拟环境会对大小产生如此巨大的影响。然而,我被告知该文件应该小得多,这样就不会增加操作系统的负担 - 用 C# 创建的类似但稍微简单的软件只有 64 KB。
有经验的开发人员会说,考虑到所有库/依赖项,这个文件大小是正常的,除了在纯 Python 中创建单独的 venv 之外,还能做什么?
编辑:经过 3 天的时间并与数千个错误作斗争,我设法使脚本在系统 Python(而不是 Anaconda)及其单独的虚拟环境中运行,以便仅安装我需要的包。结果:文件仅缩小了约 2 MB。所以绝对不值得。但对于其他人来说,我猜可能是这样。