1

我想编写一个高效的转换器,它将 JPA (1.0) 实体转换为我的传输对象,并且:

  • 将在事务上下文中调用,
  • 不会导致额外的数据库交互,即只会转换已经加载的内容。

我不能使用该构造if (entity.getSomething() != null),因为“某物”将被加载。

我唯一能想到的就是让转换器产生一个新事务,在新事务的上下文中重新加载实体并提交它——然后处理一个分离的实体。不过,它确实涉及重新加载。有什么更聪明的想法吗?

4

3 回答 3

1

您可以使用XStream将您的 Entity[Implicitly Serializable] 转换为 XML 并反序列化回对象。它可能不是有效的,但快速且易于实施。

我成功地为一个项目使用了相同的过程。

于 2011-09-26T18:04:40.197 回答
1

使用 Gilead 可以帮助 ORM 代理的东西。 http://noon.gilead.free.fr/gilead/

于 2011-09-28T21:31:08.393 回答
0

JPA 提供了一个带有 isLoaded() API 的 PersistenceUnitUtil 类,可用于确定是否加载了关系。

于 2011-09-27T15:12:42.390 回答