首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >春季JPA冬眠

春季JPA冬眠
EN

Stack Overflow用户
提问于 2015-09-15 15:15:53
回答 2查看 534关注 0票数 1

我对Hibernate Spring和JPA有一些困惑。

请看我正在使用Spring 3& hibernate应用程序,并且希望使用JPA。

( 1)能否帮助我理解Spring和Hibernate的体系结构和流程? 1)如何在它们之间使用JPA。2)使用JPA的优点是什么?3)我在某个地方读到,如果我使用JPA,那么我可以很容易地更改我的ORM框架。我怎么才能改变呢?

有人能帮我摆脱这种混乱吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-15 15:32:51

1. Spring和Hibernate的体系结构和流程

在Spring应用程序中使用JPA的过程非常简单:

  • 将Spring-Data-JPA作为依赖项包括在内。
  • 包括JPA提供程序(如hibernate jpa)
  • 使用javax.persistence注释定义实体(如@Entity@Id@Table@Column@OneToMany等)
  • 为每个实体创建一个存储库接口(下面的示例)
  • 使用配置上的@EnableJPARepositories注释启用JPA存储库

例子:

代码语言:javascript
运行
复制
PersonEntity.java

@Entity
class PersonEntity {
  @Id
  @GeneratedValue
  private Long id;

  @Column('name')
  private String name;

  public void setId(Long id) { this.id = id; }
  public Long getId() { return this.id; }

  public void setName(String name) { this.name = name; }
  public String getName() { return this.name; }
}

PersonRepository.java

@Repository
Interface PersonRepository extends JpaRepository<PersonEntity, Long> {
//no really, that's all it takes. Spring will automatically create the repo
}

然后,在您的配置中,您需要定义一个EntityManagerFactoryBean和一个DataSource bean。

在这种情况下,Spring将通过@Autowire将hibernate代码放入控制器或服务中,从而使您能够通过JPA存储库进行交互。

2和3.联合行动计划的优势

因为JPA只是一个访问和持久化数据的规范,所以它与实现无关。这意味着您可以使用实现JPA功能的任何后端(Hibernate只是一个常见的例子),而不必更改任何代码,因为您的代码只知道JPA规范。

它是业务逻辑、ORM和数据库之间的一个很好的抽象层。

希望能帮上忙!

票数 4
EN

Stack Overflow用户

发布于 2015-09-17 04:16:46

1)有人能帮助我理解Spring和Hibernate的体系结构和流程吗?

答案) JPA -JPA是用于从Java访问数据库的标准化API。所谓标准化,我的意思是它的设计者已经考虑到了现在每天使用的各种ORM框架,然后定义了一个API,它涵盖了所有这些框架的最大可能特性。话虽如此,JPA还是有点倾斜/受hibernate的影响,因为这是最主要和最广泛使用的ORM框架(而且现在仍然如此)。

Spring - Spring或者,Spring JPA是Spring中的一个模块,它以一种与Spring很好地集成的方式向Spring用户提供JPA功能。也就是说,任何在Spring项目中工作的人只需要做一些设置,如果他们使用Spring,他们可以开始使用JPA。

Spring与hibernate - JPA是ORM无关的.换句话说,JPA可以与Java中的任何ORM提供者一起工作,只要存在一个适配器,该适配器可以将所有JPA调用转换或适应到目标ORM。这个适配器的名称是JPAVendorAdapter。在JPA中使用Hibernate并不需要做太多的工作。只需指定hibernate类型的JPAVendorAdapter,并在类路径中拥有必要的适配器jars即可。总体架构或设计流程--在使用JPA时,您可以使用JPQL()或JPA标准查询来定义数据库查询。然后,JPA通过JPAVendorAdapter将DB连接处理和查询执行委托给供应商ORM。

2)使用JPA.的优点是什么?

答案) JPA有自己的查询数据库的语法,如JPQL或条件查询等。这个JPA查询语法不会改变,即使底层的从Hibernate更改为iBatis。更改底层ORM的内容只是JPAVendorAdapter设置,需要相应地放置相关的jars。JPA提供给您的最大优势是能够在代码没有/最小更改的情况下更改ORM提供者(我说的最小的原因是有些人在ORM提供者之间讨论JPA的实际可移植性--但我认为这方面现在相当稳定和成熟,无需担心)。

3)我在某个地方读到,如果我使用JPA,那么我可以很容易地更改我的ORM框架。我怎么才能改变呢?

答案)已经在我对上面问题2的回答中回答了这个问题,即通过更改JPAVendorAdapter设置并将相关的jars放置在类路径中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32589691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档