在什么情况下JPA变得有趣/有用?

时间:2010-10-02 06:35:30

标签: stored-procedures jpa plsql

我正在开发一个Java EE应用程序(JSF + Richfaces + Oracle 10g),我想使用JPA。

但最后,我没有看到使用它的任何好处,因为它会使我的代码复杂化。

我发现调用我的程序(我的orale DB中的存储过程)比使用JPA更好(因为我可以,例如,在这些过程中更改某些行而无需每次都重新编译我的“WAR”项目我有一些错误+我可以使用PL / SQL帮助我很多)

所以,我想问你的人,何时使用JPA?

不进行自己的查询(您可以选择正确的顺序选择,要选择的列,而不是所有列:因为ORM以及您的实体属性映射到列的事实您的表格,并且要求您选择实体中存在的所有属性,....)

是我使用的方法(存储功能)

2 个答案:

答案 0 :(得分:3)

  

但最后,我没有看到使用它的任何好处,因为它会使我的代码复杂化。

这可能是主观的,但就个人而言,我发现JDBC通常更冗长,更难维护,因此更加复杂。使用像JPA这样的ORM,您不必编写所有CRUD查询,您不必处理查询结果到对象的映射,您不必自己处理低级别的东西等等。

  

我发现调用我的程序(我的orale DB中的存储过程)比使用JPA更好(因为我可以,例如,在这些过程中更改某些行而无需每次都重新编译我的“WAR”项目我有一些错误+我可以使用PL / SQL帮助我很多)

这完全取决于 对“更好”的定义。在您的情况下,您可能更喜欢SP,因为您的开发工作流程(不在容器中运行我的代码来设置持久性部分)并且因为您对PL / SQL感到满意。但是,就个人而言,我并不认为SP“更好”:

  • 我真的不喜欢为所有内容编写SQL查询
  • 我发现SP更难测试,调试,维护
  • 我发现SP不利于代码重用
  • 我发现SP锁定你(我认为这是一个缺点)
  • 我倾向于发现围绕SP构建的系统难以扩展

另请阅读Who Needs Stored Procedures, Anyways?(以及其他资源)以获取更多意见。

  

所以,我想问你的人,何时使用JPA?

当您想加速开发时,专注于实现业务代码而不是管道。当然,在适当的时候。

  

不是自己提出查询(...)

您是否发现了特定的性能问题?或者你只是假设会有问题。根据我的经验,检索比所需更多的列大部分时间都不是问题。如果它成为一个问题,就有解决方案。

答案 1 :(得分:0)

您可以使用JPA定义查询中检索的字段。 为什么使用JPA会使代码的复杂性增加?你说没有例子。在你必须做凌乱的JDBC之前,现在你只需要调用“em.persist(obj)”......这真的更复杂。

你应该考虑对象之间的关系(如果有的话)以及你是否需要ORM的决定因素