2014-11-25 82 views
0

目前,我正在使用Spring框架编写我的第一个应用程序。在我的项目过程中,我得到了几条建议/建议。如何使用Spring MVC编写项目?

  • 第一条建议涉及注入一个对象。我曾使用注解@Autowired,但我听说更好的注入方法是使用注释@Inject。我知道这两个注释实际上是相同的。但@Inject是Java JSR标准注释,因此使用标准注释比非标准注释更好。

    那么,使用Autowired Inject会更好吗?

  • 第二条建议是关于使用JPA API而不是Hibernate API。例如:我们可以使用EntityManager而不是SessionFactory。

    那么,使用JPA代替Hibernate API会更好吗?

  • 我得到的第三条建议是我们不能传递实体对象来查看,但我们必须传递bean。 例如:如果我有一个Employee实体类,则必须编写一个EmployeeBean类将其传递给视图。在教程link中, 作者为实体和bean编写了一种特殊的转换方法。 我听说这个解决方案更安全,因为当我们直接在控制器中使用实体对象来传递视图时,我们可能会意外地更改数据库中的值。

我们可以创建一个特殊的bean转移到认为,而不是使用实体?

+2

那么,你的问题是什么? – 2014-11-25 09:41:12

+0

我的帖子中有三个问题。使用Autowired Inject更好吗?使用JPA代替Hibernate API Api会更好吗?可以创建特殊的bean来转移到视图,而不是使用实体? – 2014-11-25 09:44:43

+0

@TheNightmare:请访问http://stackoverflow.com/help/privileges/edit。它表明我们可以在stackoverflow中编辑帖子。 – 2014-11-25 10:13:43

回答

2

对此没有确切的答案。然而,在我看来,你的前两个问题@Inject vs @Autowired,JPA vs Hibernate,具有相同的决策路径。 @Inject是一个标准的Java EE 6(JSR-299)注释,@Autowired是Spring专有的。以同样的方式,JPA是一个规范,Hibernate只是规范的一个实现,但你可以使用hibernate的特定概念编写持久层(SessionFactory而不是EntityManager)

在这两种情况下,遵守规范都会让你的代码更加可移植的,例如你的代码应该在一系列兼容的服务器上工作。另一方面,供应商特定的实现发展更快,通常提供更多。那里没有普遍的对或错的选择。

关于你的第三个问题,它是一个不同类型的辩论。经常讨论,你可以通过https://softwareengineering.stackexchange.com/questions/198520/entity-to-dto-usage

+1

关于hibernate API与JPA API的关系,实际上,JPA API的发展往往比专有的Hibernate API更为频繁。例如,JPA的Criteria API允许做比Hibernate更多的事情。我认为Hibernate本身认为自己的专有API是遗留的,我听说Emmanuel Bernard本人(核心Hibernate开发人员之一)推荐使用JPA API。 – 2014-11-25 10:03:43

+1

好评。尽管如此,我认为它很罕见,几乎是个例外。 JPA/Hibernate可能是我所知道的最紧密的规范/供应商关系,AFAIK Hibernate开发人员写了大部分规范。尽管如此,你所说的“Hibernate本身认为自己的专有API是遗留的”听起来令人惊讶 – 2014-11-25 10:13:21

+1

“遗产”我的意思是:仍然支持,但不推荐,除非没有JPA等价物存在。 – 2014-11-25 10:16:31

相关问题