当前位置: 首页 > 面试题库 >

持久性类是否应该初始化实例变量集合

王宏扬
2023-03-14
问题内容

在我的Hibernate类中,应该初始化实例集合

public class Basket {
    private List items = new ArrayList();

    ...getters and setters...
}

或不引起注意

public class Basket {
    private List items;

    ...getters and setters...
}

对Hibernate有什么不同吗?我遇到了这个Hibernate文档,它在其中初始化了他们的HashSet,但是我经常看到他们没有被初始化。


问题答案:

从Hibernate的persistent collection文档中:

由于存在基础关系模型,因此,具有集合值的属性不支持空值语义。Hibernate不会区分空集合引用和空集合。

还有…

当您使实例具有持久性时,通过调用persist(),Hibernate实际上将用Hibernate自己的Set实现的实例替换HashSet。

这些“非空集合”和“持久”与“非持久”语义有时会因开发人员而丢失。为了使Hibernate对象保持简单,我更喜欢:

  • 总是Collectionsjava.util实现来初始化
  • 总是编码到Collection接口

使Hibernate对象Collection的习惯永远不会为NULL,并避免上述文档中指出的将Hibernate对象Collection转换为无效实现的陷阱。



 类似资料:
  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的

  • 问题内容: 在Java中,声明类级别的实例变量而不初始化它会消耗内存吗? 例如:如果不使用初始化内存,是否使用任何内存? 细节: 我有一个巨大的超类,许多不同的子类(不足以拥有自己的超类)扩展了。某些子类不会使用超类声明的每个原语。我可以简单地将这些原语保留为未初始化状态,而仅在必要的子类中对其进行初始化以节省内存吗? 问题答案: 类中定义的所有成员都具有默认值,即使您没有显式初始化它们也是如此,

  • 我想了解各种情况下类实例的初始化 在JLS-7第12.5节中,没有提到如何以及何时初始化最终实例变量?如果实例变量被声明为final,是否有人能给我一点参考来理解其行为? 给出的输出如下 在哪里作为 是否将输出作为

  • 问题内容: 我需要使用类似于php的isset函数的东西。我知道php和java截然不同,但是php是我先前类似编程知识的唯一基础。是否有某种方法可以返回一个布尔值,用于确定实例变量是否已初始化。例如… 到目前为止,我遇到了这个问题,当我的程序试图隐藏或删除尚未构造的对象时,出现运行时错误。 问题答案: 假设您对是否已为变量 明确赋值 感兴趣,答案是“不是真的”。但绝对的字段(实例变量或类变量)尚

  • 问题内容: 以下初始化当前在调用的行中产生此错误: 无法在属性初始化程序中使用实例成员’getEventCalendar’;属性初始化程序在“自我”可用之前运行。 是否有初始化任何适当的方式与依赖于其他对象类型的值实例变量的(不只是单纯?我已经尝试过将方法从一种方法转换为一种功能,但这也无济于事。 问题答案: 您可以使用仅执行一次的闭包,该闭包捕获的属性并在执行时使用它们(=第一次使用属性)。例如

  • 问题内容: 这是一些示例代码, 输出:d.value()返回0 //我希望10是因为lookup()被覆盖,但不是0!有人可以澄清吗? 的实例变量的初始化在执行其查找方法时尚未发生。如何确保在调用其方法时初始化的实例变量? 问题答案: 首先,由于缺乏方法,该代码无法编译。 无论如何,我相信您的问题是,由于构造函数是分层运行的,您的期望是无效的。 超类的构造函数始终在子类的构造函数之前运行,这包括子