二、获取必要的依赖(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,我们有两种方式可以获取依赖:
- 我们可以通过Spring IO Platform来管理我们的依赖。
- “手动”管理我们的依赖
使用Spring IO Platform管理Dependencies
使用Spring IO Platform,我们只需要以下的两步:
- 引入Spring IO Platform。
- 在项目的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,原因如下:
- 我们不需要关注依赖的版本,大家被错误的dependencies管理坑过么?
- 我们仍然可以重写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%的翻译,而是追加了个人的一些想法和补充,原文地址在本文最上方,请自行判断阅读哪一个版本。
浙公网安备 33010602011771号