如何避免POJO中的注释

时间:2014-07-07 15:29:39

标签: java spring hibernate mongodb jpa

假设我有以下POJO类

public class Example {

private String name; 

private int id;

private Object o;
// more fields
// getter/Setter

现在让我们假设我想使用JPA来保持我的实体,我将使用以下示例POJO类:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private int id;

@OneToMany(mappedBy = "directive")
private String name;

在我的意见中,这很糟糕,因为如果我想使用例如Spring Data MongoDB的Annotations没用/ false。

我能想到避免这种情况的唯一原因是定义一个接口或一个抽象类,例如Storable,它定义了getter / setter方法。

但后来我违反了POJO的定义(人们可以说它不是一个Pojo开头)。

是否有定义模型类的最佳实践?

1 个答案:

答案 0 :(得分:3)

使用JPA时,您可以保持类不受影响,并在XML文件中包含所有配置。许多人更喜欢注释,但如果需要更改持久性实现,则应考虑使用外部配置。

我不确定除了JPA之外的其他框架/规范,但XML配置在Java中有很长的路要走。我相信,许多框架都提供了这样的可能性。

还有一种称为DTO(数据传输对象)的模式,可用于将持久性问题与业务问题分离开来。

要点是:您只为数据库连接使用带注释的,以DB为中心的类。您的主应用程序仅使用面向业务的类,并且与持久性无关。数据可以来自数据库或平面文件,只要您可以将其转换为业务对象,一切都很好。

编辑:DTO听起来像很多工作,但你通过分离问题获得清晰度和可测试性。 hexagonal architectureclean architecture强调这种做法。