gpt4 book ai didi

java - 如何优雅地处理Target Unreachable

转载 作者:行者123 更新时间:2023-11-30 05:03:08 26 4
gpt4 key购买 nike

我有两个关于常见的目标无法到达异常的问题。处理它的最佳做法是什么,例如您有:国家有城市,城市有街道。- 你是否放入 Country 的构造函数 new City() 和 City 的构造函数 new Street()(这样你就可以以某种方式将它们放在一个集中的地方,但总是制作你可能不需要的对象)或者您在代码中需要它们的各个位置初始化对象? (遍布您的代码)- 如果用户没有输入 Street 的任何内容,以防止在数据库中插入空白行你把街道放回零。将其恢复为 null 的最佳位置在哪里?(假设您有 Cascade.ALL 或扩展上下文,否则如果您知道它是空的,您就不会保存它)

PS:为什么 JSF 不只是实例化它需要的东西,而 Hibernate 不持久化所有持久字段为空的实体?为了性能还是为什么?再说一遍,数据库中只有 PK 和 FK 的空行是不是不好?

最佳答案

我认为这取决于应用程序中实体之间的关系。在某些情况下,我确实会在构造函数中加载另一个对象的相关实例,但仅限于没有一个实体而没有另一个实体的情况。

一种替代方法是在 getter 中延迟创建对象:

public class Country {

private City city;

public City getCity() {
if (this.city == null) {
this.city = new City();
}

return this.city;
}

}

就 PS 问题而言,JSF 不会为您实例化对象——我不确定这是否可取……但是如果您使用惰性 getter 方法,您实际上会得到同样的结果。如果 Hibernate 会持久化一个已实例化的实体,因为它会持久化可持久对象模型的当前状态,如果它没有持久化该实体,它就不会按预期工作。

我通常不会担心一些空行,因为我选择使用 Hibernate,因为我知道 ORM 会带来一些小的性能成本。对我来说,享受坚持的抽象仍然是非常值得的。

关于java - 如何优雅地处理Target Unreachable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5983410/

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