SpringBoot-03JPA Hibernate SpringData
2017-06-20 15:51
197 查看
一. 概念
1. 什么是JPA ?
JPA(Java Persistence API)是Sun官方提供的Java持久化规范.它为java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.注:
★持久化(Persistence): 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 持久化的主要应用是将内存中的对象存储在数据库中, 或者存储在磁盘文件中/xml数据文件中等等.
★持久化是将程序数据在持久状态和瞬时状态间转换的机制.
★JDBC就是一种持久化机制. 文件IO也是一种持久化机制.
2. 什么是Spring Data ?
Spring Data是一个用于简化数据库访问, 并支持云服务的开源框架.3. 什么是Spring Data JPA ?
我们要清楚Spring Data是一个开源框架, 而Spring Data JPA是这个框架中的一个模块. 如果单独使用JPA开发, 你会发现代码量和使用JDBC一样烦人. 所以Spring Data JPA的出现就是为了简化JPA的写法, 让你只需要编写一个接口集成一个类就能实现CRUD, 分页排序等操作.二. 如何使用Spring Boot JPA-Hibernate ?
步骤:① 在pom.xml中添加mysq, spring-boot-starter-data-jpa依赖;
② 在application.properties/application.yml中配置mysql的连接信息;
③ 在application.properties/application.yml中配置JPA的信息(是否显示sql语句?表的维护策略?);
④ 编写实体类(使用@Entity修饰; 主键使用@Id @GeneratedValue修饰)
⑤ 编写Repository接口(继承CrudRepository或者其子类JpaRepository);
⑥ 编写service;
⑦ 编写controller;
步骤一:
在pom.xml中添加依赖:
<!-- 加入mysql的依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 加入jpa的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
步骤二 :
在application.properties/application.yml中配置mysql连接配置信息:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.max-active=20 #最大空闲数. 超出最大空闲数, 释放不可用连接 spring.datasource.max-idle=8 spring.datasource.min-idle=8 #初始化连接数 spring.datasource.initial-size=10
步骤三 :
在application.properties/application.yml中配置JPA信息:
spring.jpa.database=MYSQL spring.jpa.show-sql=true #表的维护方式(create, create-drop, update) spring.jpa.hibernate.ddl-auto=update #命名策略 spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
步骤四 :
编写实体bean:
package online.bendou.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.springframework.stereotype.Component; @Component @Entity(name="user_info") //使用@Entity进行实体类的持久化, 当JPA检测到实体类中有@Entity //注解时, 会在数据库中生成对应的表结构信息. name值对应数据库中的表名 public class User { @Id // 标记主键 @GeneratedValue(strategy=GenerationType.AUTO) // 主键采用自增 private Integer id; private String name; get/set ... }
步骤五 :
编写Repository接口(继承CrudRepository或者其子类JpaRepository):
package online.bendou.mapper; import org.springframework.data.jpa.repository.JpaRepository; import online.bendou.entity.User; public interface UserMapper extends JpaRepository<User, Integer>{ }
注:
JpaRepository
<T, Serializable>T表示实体对象; Serializable表示实体主键类型;
步骤六 :
编写service:
package online.bendou.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import online.bendou.entity.User; import online.bendou.mapper.UserMapper; @Service public class UserService { // 注入UserMapper @Autowired private UserMapper userMapper; @Transactional public void addUser(){ User user = new User(); user.setName("坨坨"); userMapper.save(user); } }
步骤七 :
编写controller:
package online.bendou.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import online.bendou.entity.User; import online.bendou.mapper.UserMapper; import online.bendou.service.UserService; @RestController public class Controller { @Autowired private UserService userService; @PostMapping("/add") public String add(){ userService.addUser(); return "ok!"; } }
三. 对Repostitory接口的介绍
顶级接口Repository接口是Spring Data开源框架的一个核心接口, 它不提供任何方法, 开发者需要在自定义的接口中声明需要的方法.
注意:
1. Repository是一个空接口, 即标记接口. 若我们定义的接口继承了Repository, 则该接口会被IOC容器识别为一个RepositoryBean纳入到IOC容器中, 进而可以在该接口中定义满足一种规范的方法:
a)查询方法以find|read|get开头;
2. 也可以通过@RepositoryDefinition注解代替继承Repository接口.
3. 涉及到条件查询时, 条件的属性用条件关键字连接.
4. 也可以使用@Query注解自定义JPQL语句:
package online.bendou.mapper; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import online.bendou.entity.User; public interface UserMapper extends JpaRepository<User, Integer>{ @Query("from user_info where name=:query") public User findUserByName(@Param("query") String name); }
相关文章推荐
- SpringBoot配置属性之NOSQL(四)
- spring boot 学习笔记
- springboot + shiro的配置
- springboot【3】web开发之构建RESTful API与单元测试
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- SpringBoot核心
- 快速搭建一个简单的springboot项目
- spring boot 集成WebService Cxf简单实例(rest)
- (02) SpringBoot 配置文件使用
- 附4 springboot源码解析-run()
- spring boot(1) - spring tool suite 工具的安装
- spring-boot-starter-dubbo
- springBoot+mybatis+springsecurity整合!
- 第五章 springboot + mybatis
- springboot入门(一)--快速搭建一个springboot框架
- Springboot security
- spring boot thymeleaf的使用
- SpringBoot学习-(2)使用FastJson作为json解析器
- Spring boot(Spring Boot 1.5.7.RELEASE)实践
- Spring Boot Junit单元测试