在使用hibernate持久化的类的构造函数中初始化Sets是否有任何问题?
我遇到.equal实现的问题,因为如果一个对象加载了hibernate,它的集合即使它们是空的也会被初始化,即它们只是空集。在新构造的对象中,它们为空。我知道这可以用相等的方法处理,但它有点乱,因为null并不等于空集。
我遗漏构造函数的原因,如果我认为从性能的角度来看初始化类的Set属性(创建新的HashSets或类似的东西)没有意义,然后让hibernate重新初始化它们(我猜它会吗?)。
我应该不担心这个并初始化构造函数中的Set数据结构吗?或者可以为手动初始化新实例的情况创建一个特殊的构造函数。
答案 0 :(得分:5)
您的对象应该具有不变量,其中一个不变量是集合永远不为空。它们可以是空的,但不能为空。所以是的,你应该从构造函数中实例化空集。
与Hibernate的工作,网络调用数据库等相比,这样做的成本可以忽略不计。您不会注意到性能上的任何差异。