gpt4 book ai didi

java - Hibernate 从存储库加载 UserType 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:23 28 4
gpt4 key购买 nike

设置:我的数据库中有一个对象 (AProduct) 由 hibernate 保存。此对象引用存储在存储库中的另一个对象 (AComponent)。在产品的数据库表中,只应存储组件的 ID。通过加载产品,我想从我的存储库加载正确的组件。

到目前为止,我的解决方案是为组件创建一个 UserType 以仅保存其 ID。到目前为止这很容易。加载组件也没什么大不了的,因为我有 ID。

我的问题是如何在 ComponentUserType 中获取存储库的链接。

我正在使用 java 和 Hibernate/Annotations,但解决方案可能是独立的。

最佳答案

我假设“存储库”指的是数据库以外的一些外部数据源。网络服务之类的?无论如何,如果存储库的链接是对所有产品对象都相同的静态配置,您可以使用静态访问器方法(例如“getInstance()”)创建一个单例对象来保存配置。然后 UserType 对象可以从单例中提取存储库配置。如果您正在使用像 Spring 这样的依赖注入(inject)框架,您甚至可以使用它从属性文件或其他东西初始化单例。更好的替代方法是使用 Spring(或 Guice 或其他)将配置直接推送到 UserType。但由于 UserType 对象的生命周期由 Hibernate 控制,这可能会很棘手。

如果每个产品的存储库链接不同,那么将其与 ID 一起保存在数据库中是有意义的。一种方法是创建一个类来封装 ID-存储库对以及对组件的引用。然后将该类用作产品类中的属性类型,并让 Hibernate UserType 将该类映射到几列以分别保存 ID 和链接。

关于java - Hibernate 从存储库加载 UserType 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com