`

深入学习spring-boot系列(二)--使用spring-data-jpa

 
阅读更多
本文使用我之前的博文项目作为原型,改成spring-boot项目,并使用spring-data-jpa替代mybatis作为dao实现。
原项目参考,Spring+SpringMVC+MyBatis+Maven框架整合:http://jisonami.iteye.com/blog/2295345
由于spring-boot的jar项目暂时不支持jsp,因此本项目依旧是一个war项目,下一篇文章会介绍使用thymeleaf模板替换jsp页面后的jar项目。

本文主要记录以下几点:
一、spring-boot约定的目录结构
二、Maven需要引入的jar
三、application.properties的相关配置
四、spring-data-jpa的简单使用

一、spring-boot约定的目录结构



对于这个目录结构而言,Application.java是spring的Java配置类,里面包含spring-boot应用的main()方法,在spring-boot的jar项目中会执行该方法
spring目前支持三种元数据的配置,即xml、Java注解、Java配置类,而spring-boot推荐使用Java配置类来完成元数据的配置。
Jisonami2目前的目录结构是这样的:



Jisonami2Application.java是spring-boot的入口类,包含配置信息和main()方法
@SpringBootApplication
@Controller
public class Jisonami2Application {
	
	@RequestMapping("/")
	public String index(){
		return "../../index";
	}
	
	public static void main(String[] args) {
		SpringApplication.run(Jisonami2Application.class, args);
	}
}


@SpringBootApplication其实是以下三个注解的合并,取其默认值时直接使用@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan


目前本项目是war项目,所以Jisonami2Application需要继承SpringBootServletInitializer类,并实现如下方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
	return builder.sources(Jisonami2Application.class);
}


二、Maven需要引入的jar
在maven中有两种方式可以配置成spring-boot项目,本文使用最简单的直接继承spring-boot-starter-parent成为spring-boot项目。
通过在spring-boot项目的pom.xml中引入一些spring-boot-starter的依赖,可以简化项目的配置。
maven的pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.jisonami</groupId>
	<artifactId>Jisonami2</artifactId>
	<packaging>war</packaging>
	<version>0.1.1</version>
	<name>Jisonami Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<!-- 直接继承spring-boot-starter-parent成为spring-boot项目 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.3.RELEASE</version>
	</parent>

	<properties>
		<!-- 使用了lambda表达式,覆盖默认的java版本,默认为1.6 -->
		<java.version>1.8</java.version>
		<!-- 之前用hibernate5.1.0.Final生成的表,使用spring-boot-starter-data-jpa默认引入的hibernate4.3.11会报sql错 -->
		<hibernate.version>5.1.0.Final</hibernate.version>
		<oracle14.version>10.2.0.4.0</oracle14.version>
		<taglibs.standard.version>1.1.2</taglibs.standard.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<!-- maven打war包需要,spring boot的jsp项目必须是war项目,jar项目不支持jsp -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

		<!-- 引入oracle数据库jdbc驱动包 -->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>${oracle14.version}</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- jstl依赖包 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>${taglibs.standard.version}</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<!-- spring boot项目编译插件 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>


三、application.properties的相关配置
application.properties是spring-boot项目的配置文件,spring-boot内置了很多默认配置信息,在application.properties文件中我们可以覆盖spring-boot的默认配置信息
目前本项目只需要配置spring-mvc的jsp跳转的前缀和后缀
#指定项目上下文路径
#server.context-path=/Jisonami2
#配置jsp视图的前缀和后缀
spring.mvc.view.prefix=/WEB-INF/content/
spring.mvc.view.suffix=.jsp


四、spring-data-jpa的简单使用

1、首先需要配置数据源
在Jisonami2Application.java中加入如下方法,配置数据源
@Bean
@ConfigurationProperties(locations="classpath:DBConfig.properties", prefix="datasource")
public DataSource dataSource(){
	return DataSourceBuilder.create().build();
}

DataSourceBuilder源码里面默认配置如下,即有4种默认数据源可用:(上面在DBConfig.properties配置的是dbcp的数据源)
private static final String[] DATA_SOURCE_TYPE_NAMES = { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", "org.apache.commons.dbcp2.BasicDataSource" };


DBConfig.properties的配置:
datasource.driverClassName=oracle.jdbc.driver.OracleDriver
datasource.url=jdbc:oracle:thin:@192.168.75.130:1521:orcl
datasource.username=jison
datasource.password=jison

2、以UserRepository为例,简单介绍spring-data-jpa的使用
UserRepository的代码如下:
public interface UserRepository extends CrudRepository<User, String>{
	
	public User findByName(String name);
	
	public User findByNameAndPassword(String name, String password);
	
}

UserRepository继承了CrudRepository接口与,CrudRepository接口里面定义了一些常用的方法,去掉注释,看其源码定义了如下方法:
<S extends T> S save(S entity);

	<S extends T> Iterable<S> save(Iterable<S> entities);

	T findOne(ID id);

	boolean exists(ID id);

	Iterable<T> findAll();

	Iterable<T> findAll(Iterable<ID> ids);

	long count();

	void delete(ID id);

	void delete(T entity);

	void delete(Iterable<? extends T> entities);

	void deleteAll();


好了,spring-data-jpa自动帮我们生成这些方法的实现的,我们只需要在service里调用对应方法实现对应的逻辑就行了。

spring-data-jpa具体用法自行google

spring-data-jpa官方sample工程:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa

至此,本项目就搭建完成了,更详细的代码参考我的github项目Jisonami的0.1.1版本:
https://github.com/jisonami/Jisonami2/tree/0.1.1
  • 大小: 12.5 KB
  • 大小: 18.7 KB
分享到:
评论
2 楼 jisonami 2016-07-12  
uronx 写道
多个spring boot项目打成一个jar发布,有没有试过?或者说多个spring boot项目同时使用一个端口,试过没?


多个spring boot项目就有多个app.java,然后就有多个main()方法,你打包成一个jar包就得选择一个执行的main()方法。你运行多个main方法使用同一个端口,那么你使用一个url访问时如何确定会执行哪段代码。本来每个spirng-boot项目就应该是单独运行的。如果多个项目之间有依赖关系,使用pom配置它们的依赖就好了,被依赖的项目就不需要app.java这个入口类了,其实还是一个spring boot项目,哪里来的你说的这种说法???
1 楼 uronx 2016-07-06  
多个spring boot项目打成一个jar发布,有没有试过?或者说多个spring boot项目同时使用一个端口,试过没?

相关推荐

    spring-boot-starter-data-jpa-1.5.8.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-data-jpa-1.5.6.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-data-jpa-2.3.1.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-data-jpa-2.0.3.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-data-jpa-2.1.2.RELEASE.jar

    java运行依赖jar包

    spring-boot-parent.rar

    2. **依赖管理**:在Spring Boot的父项目中,会包含Spring Boot的核心依赖及其推荐版本,如Spring框架、Spring Boot Starter、Web、Data JPA等。这样,子模块可以直接引用这些依赖,而无需指定具体版本,简化了版本...

    spring-boot-samples-master

    3. **数据访问**:"spring-boot-sample-data-jpa"和"spring-boot-sample-data-mongodb"分别演示了如何与关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB)集成,使用JPA和Spring Data进行数据操作...

    spring-boot 所有jar包

    例如,`spring-boot-starter-web`用于Web开发,`spring-boot-starter-data-jpa`用于数据库访问。 2. **内嵌Web服务器**:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Web服务器,这意味着你可以无需额外配置即可...

    spring-boot-starter-mybatis-spring-boot-1.0.2.zip

    &lt;artifactId&gt;spring-boot-starter-data-jpa &lt;version&gt;1.0.2.RELEASE ``` (2) 配置数据源:在application.properties或application.yml文件中配置数据库连接信息,如数据库URL、用户名、密码等。 ```properties ...

    spring-boot-2.0.0.M7 源码包

    通过深入研究这个源码包,开发者不仅可以理解Spring Boot的内部工作原理,还可以学习到如何设计和实现类似的框架,提升自己的Java和Spring技术栈能力。同时,对于遇到的问题,可以通过查看源码找到解决思路,有助于...

    spring-boot-sample-data-jpa

    标题“spring-boot-sample-data-jpa”表明我们正在讨论一个基于Spring Boot的应用程序示例,它使用了Spring Data JPA来处理数据库操作。Spring Boot简化了Java应用的初始设置,而Spring Data JPA则是Spring框架的一...

    spring-boot-demo

    比如,如果我们需要添加数据库支持,只需在`pom.xml`或`build.gradle`文件中引入相应的起步依赖,如`spring-boot-starter-data-jpa`,Spring Boot就会自动配置好相关组件,无需编写大量配置代码。 在"spring-boot-...

    spring-boot-cli-2.0.3.RELEASE-bin.zip

    1. 使用`spring init --dependencies`命令初始化一个新的Spring Boot项目,你可以指定需要的依赖,如Web、Data JPA等。 2. 初始化完成后,会生成一个`build.gradle`文件,这是Gradle构建工具的配置文件,你可以使用`...

    spring-boot-2.7.0.zip源码

    6. **条件注解**:Spring Boot使用`@Conditional`系列注解,如`@ConditionalOnClass`、`@ConditionalOnMissingBean`等,使得配置的启用基于特定条件,增加了代码的灵活性。 7. **属性绑定**:`@Value`和`@...

    spring-boot-starter-data-jpa-1.4.0.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-data-jpa 的二级缓存

    Spring Boot的众多启动器(Starter)之一就是spring-boot-starter-data-jpa,它为使用Java持久化API(JPA)提供了方便的依赖管理和自动配置。 JPA是Java持久化API的缩写,是一个Java持久层规范,用于对象关系映射,...

    spring-boot-web-restfulcrud代码示例

    这涵盖了从项目的初始化、Controller 的编写、服务层的设计到与数据库的交互等多个方面,是学习和实践 Spring Boot Web 开发的一个很好的起点。通过这个项目,你可以深入理解 Spring Boot 的自动化配置、RESTful API...

    spring-data-jpa

    在Spring Boot项目中,可以通过starters来快速引入相关依赖,例如使用`spring-boot-starter-data-jpa` starter,开发者能够直接获得一个配置好的数据访问环境。 Spring Data JPA 的核心概念之一是Repositories,它...

    spring-boot-04-web-restfulcrud

    《Spring Boot 2.4 RESTful CRUD 实战详解》 在现代Web开发中,Spring Boot以其简洁、高效的特点,已经...通过尚硅谷B站教程的辅助,学习者将更深入地了解Spring Boot的新特性和变化,为后续的Web开发奠定坚实基础。

    Spring Boot源码(spring-boot-2.6.2.tar.gz)

    通过`spring-boot-starter-data-jpa`,开发者可以快速集成JPA并使用Hibernatet进行ORM操作。在源码中,相关的配置和初始化逻辑位于`org.springframework.boot.autoconfigure.data`包下。 对于测试,Spring Boot提供...

Global site tag (gtag.js) - Google Analytics