2011-12-22 27 views
1

我正在使用Spring和Hibernate继承的Java Web应用程序。此应用程序包含使用hbm2java自动生成的持久性类。这些类中包含具有多个参数的构造函数(以及典型的默认构造函数)。这些非默认的构造函数不能被任何其他方法直接访问。也没有任何明确的调用这些类的春天定义,所以它似乎是死代码...持久化类中多个参数构造函数的任何原因?

现在我知道这个问题是隐晦模糊的,但会有任何正常的原因,Hibernate通常会调用这些构造函数通过反思?我知道它使用Class<T>.getInstance()来调用默认的构造函数来创建该对象的新实例,但这就是它...

回答

1

不,那些不在那里,因为休眠会使用它们。

这种类型的构造函数在实例化和初始化实体类时通常很有用。而不是使用默认的构造函数并调用多个setter,使用带有多个参数的构造函数更容易。

+0

问题是Hibernate可以将构造函数的参数从一个代码生成交换到另一个。恰好发生在我和一名同事身上。 – NobleUplift 2014-08-01 14:03:38

0

看看你的分贝。通常,hibernate会为您的数据库中的所有列创建构造函数,然后为所有必填字段创建另一个构造函数。

+0

“hibernate创建构造函数”?怎么样? – 2011-12-22 23:44:12

+0

如果使用eclipse的hibernate插件反向设计实体对象,则它们将具有多重构造函数。这就是我所说的“持久性”课程在这个问题上的意思。正如他所说,它有点模糊,所以我拍了一下! – Mick 2011-12-22 23:46:50

+0

我认为这是实际上通过反向设计数据库表来生成这些实体的插件。 – 2011-12-22 23:48:21