假设我有以下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开头)。
是否有定义模型类的最佳实践?
答案 0 :(得分:3)
使用JPA时,您可以保持类不受影响,并在XML文件中包含所有配置。许多人更喜欢注释,但如果需要更改持久性实现,则应考虑使用外部配置。
我不确定除了JPA之外的其他框架/规范,但XML配置在Java中有很长的路要走。我相信,许多框架都提供了这样的可能性。
还有一种称为DTO(数据传输对象)的模式,可用于将持久性问题与业务问题分离开来。
要点是:您只为数据库连接使用带注释的,以DB为中心的类。您的主应用程序仅使用面向业务的类,并且与持久性无关。数据可以来自数据库或平面文件,只要您可以将其转换为业务对象,一切都很好。
编辑:DTO听起来像很多工作,但你通过分离问题获得清晰度和可测试性。 hexagonal architecture和clean architecture强调这种做法。