二、获取必要的依赖(Dependencies )

二、获取必要的依赖(Dependencies )

引自

Spring Data JPA Tutorial: Getting the Required Dependencies(https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-getting-the-required-dependencies/)

正文

在我们使用Spring data jpa创建一个应用之前,我们首先要获取它的依赖包。

本文会描述我们如何使用Maven来获取所需要的组建。

附加阅读: 如果你还不是很熟悉Spring data jpa,你应该先阅读这篇文章:一、Spring data jpa介绍

我们需要什么组件?

当我们尝试使用SPring Data JPA实现一个持久化层,我们需要如下的组件:

  • JDBC driver,这个组件会根据JDBC API提供一个特定数据库的实现,这里我们将使用H2 in-memory database,轻量级、简单、内存级、特别适合写Demo.
  • datasource,这个组件会将我们应用与链接数据库进行连接。这里使用的是HikariCP datasource
  • JPA供应商,这里我们就是用Hibernate了,毕竟这是最常用的JPA供应商。
  • SPring data JPA,这是废话了,本文的主角,提供建立在JPA供应商之上的repository的抽象实现。

好了,下面开始动手了~

使用Maven获取必须的依赖

当我们使用Maven,我们有两种方式可以获取依赖:

  1. 我们可以通过Spring IO Platform来管理我们的依赖。
  2. “手动”管理我们的依赖

使用Spring IO Platform管理Dependencies

使用Spring IO Platform,我们只需要以下的两步:

  1. 引入Spring IO Platform。
  2. 在项目的pom.xml中配置我们具体需要的dependencies。

第一步:将Spring IO Platform放入到pom.xml中。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>1.1.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 

关于Spring IO Platform的版本号,可以从这里获取你需要的。

第二步:引入具体我们所需要的具体依赖。 这里我们并不需要再对这些依赖进行版本号的标识,交给Spring IO Platform去处理,非常简单。 把下面的依赖放入我们的pom.xml中。

<!-- Database (H2) -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
         
<!-- DataSource (HikariCP) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>
 
<!-- JPA Provider (Hibernate) -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
</dependency>
 
<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
</dependency>

 

这里可以去看作者项目中的pom.xml,


附加阅读


手动管理Dependencies

...这样玩就太累了,简单的说一下吧,这里Dependencies的版本号与Spring IO Platform的1.1.2.RELEASE版本相同。

<!-- Database (H2) -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.185</version>
</dependency>
         
<!-- DataSource (HikariCP) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.2.5</version>
</dependency>
 
<!-- JPA Provider (Hibernate) -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.8.Final</version>
</dependency>
 
<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.7.2.RELEASE</version>
</dependency>

 

那么问题来了,我们用哪种方式管理我们的依赖呢?

问题来了,我们怎么更聪明的管理Dependencies呢?

如果我们创建一个新的项目,请务必使用Spring IO Platform,原因如下:

  1. 我们不需要关注依赖的版本,大家被错误的dependencies管理坑过么?
  2. 我们仍然可以重写Spring IO Platform中dependency的版本,所以不需要担心。

当然,在已存在的项目中,我们也可以使用手动管理Spring data jpa的dependencies,毕竟数量不多么。

总结

本位尝试在描述下面的四件事:

  • 当我们尝试使用SPring Data JPA实现一个持久化层,我们需要一个JDBC driver, 一个 datasource, 一个 PA provider和 Spring Data JPA。
  • 我们可以使用Spring IO platform或者手动的管理方式,管理我们的dependencies。
  • 当我们开始一个新项目,我们应该使用Spring IO platform去管理我们的dependencies,因为更加简单,方便和安全。
  • 当我们对一个已经存在的项目集成SPring data jpa的话,应该采用手动的管理方式,因为涉及的jpa的dependencies数量真心不多。

下一章我们将了解如何配置Spring data jpa。

留言区

这里将原文中的一些留言记录下来,毕竟这些留言要么是别人实践过程中出现的问题,要么是别人思考的问题,好处是Petri几乎对大部分的留言都进行了回答。

Q1、非常好的指南,但是能给我展示一下怎么使用eclipse和STS创建新项目么?

Petri: 我已经8年没有使用eclipse了,原因就是eclipse对maven的支持太差。当我下载一个Eclipse Mars,然后导入我的项目 (File -> Import -> Maven -> Existing Maven Projects) ,然后我得到了下面的提示:

“No marketplace entries found to handle maven-antrun-plugin:1.7:run in Eclipse. Please see Help for more information.”

所以这就是我为什么使用IntelliJ Idea的原因,同样的操作,一步到位。

备注

原文作者简介:

Petri Kainulainen is passionate about software development and continuous improvement. He is specialized in software development with the Spring Framework and is the author of Spring Data book.

声明:

这里并不是原文100%的翻译,而是追加了个人的一些想法和补充,原文地址在本文最上方,请自行判断阅读哪一个版本。

posted @ 2017-04-22 23:19  Tan1  阅读(692)  评论(0)    收藏  举报