Ohhnews

分类导航

Baeldung

Hibernate中@Find注解详解:按方法命名约定生成仓库实现

本文介绍Hibernate 6.3及以上版本中的@Find注解,用于在仓库接口中按方法查询命名约定自动生成实现类。文章先演示环境搭建,包括引入hibernate-core 7.4.6与Jakarta Data API依赖、在maven-compiler-plugin中配置Hibernate Processor注解处理器,以及创建authors与books示例表与对应实体。随后说明标注@Repository的接口如何被编译期生成实现,并可通过返回EntityManager的方法变体,让实例在Spring等容器中一次创建、重复使用。@Find支持按实体字段过滤结果,返回单个实体或列表;空结果可用Optional或@Nullable处理,多结果则抛出NonUniqueResultException。借助$符号可沿@ManyToOne、@OneToOne关系进行嵌套字段查询。此外还支持@OrderBy静态排序、Order参数动态排序,以及传入PageRequest分页并返回Page对象以获取总元素数与前后页信息。
#hibernate#@find注解#jakarta data#数据持久化#仓库模式
$ more
foojay

一个数据库,两种模型:用 MySQL JSON 双态视图构建 AI 友好的 Java 应用

文章介绍 MySQL JSON 双态视图:它让订单、客户、商品等关系表以 JSON 文档形式读写,读取时由数据库按需组装,写回文档时自动更新、插入或删除对应行。作者用 Java 构建示例,包含 20 个单元测试、31 个 MySQL 集成测试及 3 个本地大模型测试。MySQL 9.7.2 社区版已支持通过视图写入。读操作更简单,但视图会先构建所有订单文档再过滤,大数据量下需检查执行计划。写操作是整体替换而非局部更新,遗漏 items 会删除订单行;etag 可检测并发冲突,但默认可选,作者建议强制要求。文章还比较了 JDBC、JPA、Spring Data JDBC 的查询次数,并接入 Ollama 与 LangChain4j,让本地 AI 助手通过只读工具查询订单。结论:适合表结构良好、多个消费方需要相同文档形状的小型文档场景,不适合大型过滤列表、批量更新或需快照的数据。
#mysql#json双态视图#java#ai助手#关系数据库
$ more
Baeldung

JDK 26 性能改进全面解析

JDK 26 包含超过1000项增强,重点覆盖类库、垃圾回收器、编译器与运行时性能。JEP 526 引入第二次预览的惰性常量 API,可延迟构建昂贵对象并免除同步开销;MemorySegment.getString() 减少中间分配与拷贝,记录类的 hashCode() 获得更好的类型分析,AES、ML-DSA 与椭圆曲线 P-256 运算也得到优化。JEP 522 为 G1 增加第二张卡表,降低写屏障同步成本,引用更新密集的场景吞吐量提升约5%至15%。JEP 516 让 AOT 对象缓存兼容所有垃圾回收器,包括 ZGC。默认初始堆改用 MinHeapSize,减少启动阶段的准备工作。C2 编译器可优化参数列表超长的方法并改进 SuperWord 向量化成本模型,虚拟线程在等待类初始化时也能卸载载体线程。升级时应以生产级负载在同一配置下对比启动时间、吞吐量与 GC 暂停分布。
#jdk 26#java#性能优化#垃圾回收#虚拟线程
$ more
Baeldung

Spring AI 结构化输出实战指南

本文介绍如何借助 Spring AI 从大语言模型获取结构化输出,从而避免直接处理原始文本、方便在程序中直接使用。文章首先演示项目搭建:引入 OpenAI 启动依赖,在配置文件中设置 API Key 与聊天模型,Spring AI 会自动创建 ChatModel 与 ChatClient,并定义一个包含嵌套记录与枚举的 Recipe 领域实体。随后展示通过 ChatClient 的 entity() 方法将模型回复直接映射为 Java 对象,其内部流程为依据目标类型生成 JSON Schema、附加格式指令并在收到回复后反序列化。针对模型可能不遵守格式的情况,文章给出两种自纠正方案:一是客户端使用 validateSchema() 或 StructuredOutputValidationAdvisor 校验并回传错误重试;二是通过 useProviderStructuredOutput() 交由服务商保证合规。此外还介绍了将响应转换为列表与映射的方式、直接使用 ChatModel 与转换器手动解析的做法,以及通过实现 StructuredOutputConverter 接口编写自定义转换器(如 YAML 输出)的完整示例。
#spring ai#结构化输出#大语言模型#java#数据转换
$ more
Spring Blog

Spring Boot 4.2.0-M2 现已发布

Spring Boot 4.2.0-M2 已发布,并可从 Maven Central 获取。该版本包含 141 项增强、文档改进、依赖升级和错误修复。值得关注的新特性包括:LDAP 的 SSL bundle 支持,涵盖嵌入式 LDAP 服务器的 LDAPS 支持;支持 OpenTelemetry 语义约定,以及常见 OTLP 端点、请求头和压缩配置。更多细节和升级说明请参阅发布说明。
#spring boot#版本发布#java框架#ldap#opentelemetry
$ more
Spring Blog

Spring AI 2.1.0-M1 里程碑版本正式发布

Spring AI 团队发布 2.1.0-M1 里程碑版本,已上线 Maven Central。该版本以 Spring Boot 4.2 为基线,是 2.1 系列的首个里程碑,带来三项新能力:消息内容改为有序的 MessagePart 结构(含文本、推理、工具调用、工具结果、媒体及未知部件),新增对 OpenAI Responses API 的支持,并允许将预先计算好的向量写入向量库。新的 OpenAiResponsesChatModel 面向 GPT-5.4 等旗舰模型,可在推理模式下进行工具调用,且保持无状态,兼容现有记忆、顾问与 RAG 机制。VectorStore.upsert() 支持直接写入外部生成的向量,pgvector、Redis、Elasticsearch 与 Qdrant 已支持。版本还修复了 OpenAI 超时配置被覆盖、严格模式工具模式缺少 additionalProperties、Bedrock 空文本块报错、TextReader 资源泄漏等问题。后续 2.1.0-RC1 将把消息部件推广至所有模型实现,并引入会话管理。
#spring ai#人工智能#openai#向量数据库#版本发布
$ more
foojay

Codename One发布VoIP与VPN原生API,构建器自动完成平台集成

Codename One 通过包触发的构建器机制,在保持单一 Java/Kotlin 代码库的前提下,为应用加入了原生的通话管理与托管 VPN 能力。新的 Calls API 将应用通话状态接入 iOS 的 CallKit 和 Android 的自管理 ConnectionService,媒体与信令栈仍由开发者自行掌控,且仅在原生音频会话激活后才启动媒体。Vpn API 支持在 iOS 与 Android 上安装和控制托管 IKEv2 配置文件(iOS 还支持 IPsec),操作系统负责用户授权与凭据存储;VpnTunnel 则暴露原始 IP 数据包,供开发者实现自定义隧道,其中 iOS 需借助构建器生成并签名独立的网络扩展。此外本次更新还包含原生模态对话框、基于 AppKit 的原生 Mac 应用、短信验证码自动填充、联系人选择器,以及每日监控 Apple 与 Google 平台变更的自动化任务。整体设计遵循最小权限与窄默认范围,未使用的包不会引入多余的原生组件与权限。
#codename one#voip#vpn#跨平台开发#原生集成
$ more
foojay

BoxLang AI 3.4.0发布:网关、人在回路与完整安全栈

BoxLang AI 3.4.0 发布,主题是信任。新增 IGateway 网关接口,提供 CLI、HTTP、Mock 网关,实现平台事件与 AI 代理的双向交互,可接入人在回路中间件。人在回路功能重构,审批策略与交互流程分离,支持持久化审批决策和批量审批,一次挂起多个待授权工具调用,覆盖 OpenAI、Claude、Bedrock、Cohere。安全功能采用三层可选防护:输入消毒、不可信内容围栏和输出防护,包括 Unicode 规范化与零宽字符清理。新版本统一跨提供商推理输出,新增 cancelRun、steerRun 运行控制、aiGatewaySession 网关会话,扩展 AWS Bedrock 认证、Guardrails 与嵌入支持。SummaryMemory 可按 token 触发摘要,默认请求超时从 45 秒提高到 90 秒,并修复 Claude、Bedrock、Cohere 中间件等问题。
#boxlang ai#ai代理#人在回路#安全防护#网关
$ more
Jetbrains Blog

PhpStorm公布新一批PHP开源项目赞助名单

PhpStorm回顾了其推出开源赞助计划一年来的进展,并公布了新一批受赞助的开源项目。该计划每年挑选五个开源项目进行为期一年的资助,目的不仅是提供资金支持,也在于提升外界对开源在PHP开发中关键作用的认识,并鼓励更多人参与贡献。经多方征集与筛选,本年度入选项目包括:PHPUnit 作者兼维护者 Sebastian Bergmann、本地PHP环境与服务器管理工具 Lerd 的开发者 George Dumitrescu、被 FrankenPHP 和 Native PHP 等项目使用的 static-php-cli 开发者 Jerry Ma、被视为现代PHP基石的 Composer,以及关注包容性的 Larabelles。官方同时感谢所有提交建议的人,并表示将继续赞助 PHP 基金会,呼吁更多个人与组织加入支持行列,共同推动PHP生态变得更好。
#phpstorm#php#开源#项目赞助#jetbrains
$ more
Jetbrains Blog

设计 Kotlin Multiplatform 与 TeamCity 集成

JetBrains 分享了为 Kotlin Multiplatform 设计并构建 TeamCity 集成的方法。该集成通过渐进式引导,帮助面向 iOS 的 KMP 开发者从首次 Git 推送,走到测试构建、TestFlight 发布和全自动流水线,全程无需离开 IDE。文章指出 iOS 发布面临 macOS 基础设施昂贵、Apple 签名配置复杂、IDE 到 CI/CD 缺少引导等痛点。目标是让开发者无需 CI/CD 经验和 Mac,借助 TeamCity Cloud 的托管 macOS 代理与免费构建额度完成任务。流程分三阶段:构建测试、发布、自动化。设计团队先梳理 10 步旅程,并在 6 月进行约 10 次可用性测试。关键决策包括:首次推送后适时提示配置 CI;生成 teamcity.yaml、Fastfile、Appfile、Gemfile 并保持本地未提交,先远程验证;用一个表单收集 App Store Connect API 密钥、团队 ID、Bundle ID 和分发证书。连接 GitHub 后,每次推送自动构建、测试、签名并上传 TestFlight。KMP 文档已提供相关教程。
#kotlin multiplatform#teamcity#ci/cd#ios 发布#开发工具
$ more