Questions tagged «jpa»

5
保持与实现不可知论真的值得吗?
我有一个正在使用Tomcat,Spring 4,Spring Security,MySQL和带有Hibernate的JPA的项目。 我从JPA的角度出发选择了JPA,它是为了使ORM提供程序的基础实现无缝交换,或者至少减轻痛苦。我要说的是,在思想上使用规范而非实现(JAX-RS)是Java开发社区的默认观点。 我很好奇这是否真的值得一做。我敢肯定,如果我直接使用Hibernate,我会获得一些力量,因为我可以使用不属于主要JPA规范的功能。 我的部分担忧来自YAGNI的想法。我本质上是以特定的样式和方式编程(使用JPA而不是Hibernate),以便将来可以在某些时候换出我的ORM实现。我严重怀疑这种情况会在产品的整个生命周期内发生,因此,我实质上是在努力做一些我可能永远不会从中受益的事情。 你怎么看?对于诸如JPA之类的东西,“编程接口”是否值得?您是否曾经在产品中交换过整个ORM实施?您是否曾经能够完全避免像JPA这样的泄漏引起的抽象?我个人已经有一个本地SQL调用(以清理数据库表),并且我想在JPA规范中内置一些功能(获取/设置方法的前缀,以及MEMBER OF之间的区别) / IN,它只会将自己绑定到底层实现上,这给了我避免的机会。

4
如何使用单元测试和TDD来测试主要依赖数据库CRUD操作的应用程序?
在工作中,我的项目之一主要是获取从外部客户端传入的数据并将其保存在数据库中。这是一个使用JPA的Java企业应用程序,我们的大多数逻辑都围绕CRUD操作展开。 我们的大多数错误都以一种或另一种方式涉及JPA。 示例1:如果单击保存按钮两次,JPA可能会尝试第二次将同一实体插入数据库,从而导致主键冲突。 示例2:您从数据库中检索一个实体,对其进行编辑,然后尝试更新其数据。JPA可能会尝试创建一个新实例,而不是更新旧实例。 解决方案通常需要添加/删除/更改JPA批注。其他时候,它与修改DAO逻辑有关。 我无法弄清楚如何使用单元测试和TDD对我们的代码充满信心。我不确定这是因为单元测试和TDD不合适,还是我错误地解决了这个问题。 单元测试似乎不合适,因为我只能在运行时发现这些问题,并且需要部署到应用服务器以重现这些问题。通常需要涉及数据库,而我认为这超出了单元测试的定义:这些是集成测试。 TDD似乎不合适,因为部署+测试反馈循环是如此之慢,以至于我效率低下。部署+测试反馈循环需要3分钟以上的时间,这就像我专门针对所编写的代码运行测试一样。要运行所有集成测试,需要30分钟以上的时间。 在此模型之外有代码,我总是尽可能地进行单元测试。但是,我们的大多数错误和最大的时间浪费总是涉及JPA或数据库。 还有另一个类似的问题,但是如果我遵循建议,我将包装代码中最不稳定的部分(JPA)并测试除此以外的所有内容。就我的问题而言,我将处于同样的糟糕境地。打包JPA之后的下一步是什么?海事组织,这个问题(也许)是回答我的问题的步骤,而不是答案。
22 java  unit-testing  tdd  jpa 

2
实体到DTO的使用
一直在尝试提出基本的分层Web应用程序的流程,并一直在线阅读有冲突的信息。我想弄清楚的是,通过使用某种映射器,仍然可以从DAO到Service层继续使用DTO对象是否有优势。 我预见的基本流程如下: UI模型/表单->控制器 控制器将模型转换为域对象(实体) 域对象->服务层 域对象-> DAO DAO->域对象 服务-> UI UI将Domain转换为UI模型 如果遵循DTO,则DAO将回传DTO,而不是实体。经过一番阅读后,由于(至少在Java中)实体已成为带注释的POJO,因此DTO似乎已经失效,这意味着它们的内存占用量已经很小。 是这种情况,还是应该使用DTO将域对象完全封装在DAO层中?如果是这种情况,服务层将如何传递给DAO? 谢谢一群!
15 java  entity  jpa 

1
IntelliJ与Maven编译
我有一个需要Hibernate jar的项目。 我将它们作为依赖项添加到pom.xml中,并且Maven可以很好地编译我的项目。 但是,在IDE中,所有对Hibernate API的注释和调用都标记为未解析(红色)。 我怎样才能使IntelliJ能够解决它们? 当我单击“生成项目”时,是否可以使用Maven?(Ctrl + F9) 另外,我对IntelliJ中的构面概念感到困惑。我是否需要它们,比如说JPA方面来启用Persistence Assistant等...,或者有一个选项可以让Maven照顾一下?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.