Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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 JPA:我应该使用orm.xml清理我的实体类吗?_Java_Orm_Jpa - Fatal编程技术网

Java JPA:我应该使用orm.xml清理我的实体类吗?

Java JPA:我应该使用orm.xml清理我的实体类吗?,java,orm,jpa,Java,Orm,Jpa,我目前只使用JPA注释,但我真的不喜欢用太多与行为无关的ORM细节污染我的实体类(例如表名、id生成策略、连接列…) 我看到了这一点(粉红色的),但我还没有看到任何其他实现推荐这一点,而且JPA似乎没有将注释分为这两组(我认为JDO是这样) 有人以这种方式使用annotations+orm.xml吗?您有什么经验 它会从我的实体类中消除一些污染,还是我会遇到问题?我们在半定期的基础上遇到的最大问题是,如果您想使用注释以任何方式更改持久性映射,您需要重新编译和重新部署 使用orm.xml为您提供了

我目前只使用JPA注释,但我真的不喜欢用太多与行为无关的ORM细节污染我的实体类(例如表名、id生成策略、连接列…)

我看到了这一点(粉红色的),但我还没有看到任何其他实现推荐这一点,而且JPA似乎没有将注释分为这两组(我认为JDO是这样)

有人以这种方式使用annotations+orm.xml吗?您有什么经验


它会从我的实体类中消除一些污染,还是我会遇到问题?

我们在半定期的基础上遇到的最大问题是,如果您想使用注释以任何方式更改持久性映射,您需要重新编译和重新部署

使用orm.xml为您提供了一定程度的抽象,可以使重新配置更加简单,并且在技术上可以使用相同的代码库实现(例如,您可以确保没有一行代码潜入您正在重新编译/重新部署的内容)

您可以同时使用注释配置(这是我现在正在使用的环境)-使用函数类型持久性元数据(即外键、联接等-具有代码级表示的事物)注释类,同时使用无关信息(即表/列名)存储在配置文件中


当我们使用一种配置机制而不是另一种配置机制时,我们仍在尝试开发一些清晰的启发式方法,但我们正在实现这一目标

JPA实体仅仅是javabean(定义getter和setter的类),带有可选的支持代码(构造函数、hashCode、equals、命名查询、复制方法等等),即使包含了所有类型的JPA注释,也很难被认为受到了污染

在Java注释和xml之间拆分元数据的真正目的是简化和优化部署策略。您将承受两倍的价格:

  • 发展的执行 关于什么元数据的策略 属于哪个地方
  • 创建时交叉引用java和xml 尤其是维护元数据(或多或少但总是不方便)
  • 在一般到大型的开发团队中工作时,这两个方面都是非常重要的考虑因素

    如果重新编译数据库更改在部署过程中带来了重大挑战,那么这听起来是一种合理的方法。但代价将是更复杂的开发环境、流程和维护策略