JPA 1.0:如何从实体到传输对象编写高效的转换器?

时间:2011-09-23 11:15:02

标签: java java-ee jpa jpa-1.0

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

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

我无法使用构造if (entity.getSomething() != null),因为“某些东西”会被加载。

我唯一能想到的是让变换器产生一个新事务,在新事务的上下文中重新加载实体并提交它 - 然后处理一个分离的实体。但它确实涉及重新加载。任何聪明的想法?

3 个答案:

答案 0 :(得分:1)

您可以使用XStream将您的实体[隐式Serializable]转换为XML&反序列化回到对象。它可能不是有效的,但快速和易于实施。

我成功地为项目使用了相同的流程。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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