JPA最佳做法?

Hay*_*Hay 8 java entity jpa pojo

我正在开发一个利用JPA/EclipseLink作为持久层的小型多层应用程序.在我目前的设计中,我有两组对象,POJO和Entity对象,我使用POJO进行常规编程任务,而Entity类用于DB读/写和表映射​​.

现在有必要让POJO =>实体映射(有问题),然后是第二个Entity ==> DB表映射(JPA注释)?我发现使用Entity类作为我的主java对象更容易,并且在必要时将它们持久化,所有Entity类本质上都是POJO并带有几个JPA注释.

同样在确实需要将事物分开的情况下,POJO =>实体映射的最佳位置是什么,目前我在CRUD方法中这样做,例如

public void addCustomerPOJO(Customer customerPOJO){
   //Cteat EntityManager and start a Transaction

   //Create Entity class and populate it with values 
   //from the passed-in regular (non entity) Customer class

  //Persiste and close
}
Run Code Online (Sandbox Code Playgroud)

有没有更好或更常见的方法来做到这一点?

SJu*_*n76 2

也许造成混淆的原因是该实体只是一个带有映射信息的 POJO(在代码中作为注释或在单独的配置文件中)。只要您愿意,就可以作为 POJO 工作(您可以创建和修改对象;只要您不使用会话保存它们,它们就不会写入数据库中)。

有时您可能需要将数据存储在不是实体的 bean 中(主要是因为该 bean 由另一个框架管理,并且您不想混合内容*1),那么您只需复制(通过特定的构造函数,通过调用大量的 set...(),无论如何)将数据从您的 bean 传输到您的实体/POJO。

*1 我在这里想到的是 JSF。