Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免POJO中的注释_Java_Spring_Hibernate_Mongodb_Jpa - Fatal编程技术网

Java 如何避免POJO中的注释

Java 如何避免POJO中的注释,java,spring,hibernate,mongodb,jpa,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 i

假设我有下面的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,注释将是无用的/错误的

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

但是我违反了POJO的定义(有人可能会说它一开始就不是POJO)


有没有定义模型类的最佳实践

使用JPA时,您可以保持类不变,并将所有配置保存在XML文件中。许多人喜欢注释,但是如果更改持久化实现是必需的,则应该考虑使用外部配置。

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

还有一种称为DTO(数据传输对象)的模式,可用于将持久性关注点与业务关注点分离

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


编辑:DTO听起来需要做很多工作,但是通过分离关注点可以获得清晰性和可测试性。并强调这一方法。

我肯定有一些。这就是最佳做法。您是否在寻求一种编写Java类的方法,该类可以被任何库普遍持久化?我不确定这是一个现实的期望。是的,这正是我想到的。@haßehueck你有没有关于这件事的新发现?你选择了哪种方法?模型类中的xml、dto或JPA注释?我宁愿避免使用xml,但这可能是一种非常通用的方法。我心里有两个灵魂:)我也宁愿避免使用xml配置,但您已经知道应用程序中会发生什么变化,您可以通过提取更改吸引子使更改更容易。