springboot中使用spring -data-jpa (一)
来源:互联网 发布:行知实验小学怎么样 编辑:程序博客网 时间:2024/06/05 20:41
jpa机制为我们开发带了方便,,介绍一下Jpa的使用
什么是JPA
百度百科上面的解释:
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
简单来讲
jpa就是sun官方提出的Java持久化规范,它为Java开发人员提供了对象关系映射工具来管理Java应用中的数据;
什么是持久化
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备(如磁盘),持久化的主要应用是将内存中的对象存储在的数据库中,或者存储在磁盘文件中、XML数据文件中等等。
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
什么是规范
“规范”:所谓的规范意指明文规定或约定俗成的标准,如:道德规范,技术规范,公司管理规范。
那么“持久化规范”就是Sun针对持久化这一层操作指定的规范,如果没有指定JPA规范,那么新起的框架就随意按照自己的标准来了,那我们开发人员就没法把我们的经历全部集中在我们的业务层上,而是在想如何进行兼容,这种情况有点像Android开发,Android本身有官方的SDK,但是由于SDK过于开源了,结果导致很多厂商基于SDK二次开发,但是兼容性就不是很好.
什么是Spring Data JPA
SpringData是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务.此外,它还支持基于关系型数据库的数据服务,如Oracle RAC等。对于拥有海量数据的项目,可以用Spring Data来简化项目的开发,就如Spring Framework对JDBC,ORM的支持一样,Spring Data会让数据的访问变得更加方便。
Spring Data JPA的好处
可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页、排序等一些常用的功能。
首先我们需要清楚的是Spring Data是一个开源框架,在这个框架中Spring Data JPA只是这个框架中的一个模块,所以名称才叫Spring Data JPA.如果单独使用JPA开发,你会发现这个代码量和使用JDBC开发一样有点烦人,所以Spring Data JPA的出现就是为了简化JPA的写法,让你只需要编写一个接口继承一个类就能实现CRUD操作了。
springboot中使用jpa的步骤;
(1)在pom.xml添加mysql和spring-data-jpa依赖;<!-- 添加spring-data-jpa的依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- 添加MySQL数据库的依赖 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency>
(2) 在application.properties文件中配置mysql连接配置文件;
spring.datasource.url = jdbc:mysql://localhost:3306/springspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.max-active=20spring.datasource.max-idle=8spring.datasource.min-idle=8spring.datasource.initial-size=10
(3) 在application.properties文件中配置JPA配置信息;
#指定jpa的数据库;spring.jpa.database = MYSQL#指定是否展示sql语句;spring.jpa.show-sql = true#指定ddl语句的形式spring.jpa.hibernate.ddl-auto = update#实体类和表的映射配置spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategyspring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
(4) 编写一个测试例子;
一: 创建实体类;
@Entitypublic class User { //指定主键; @Id //指定主键的生成策略;MySQL默认为自增; @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String name; private String gender; private Integer age; //此处省略 getter 和 setter 方法;
上面用户实体类中
我们使用@Entity注解来实现实体类的持久化操作,当JPA检测到我们的实体类当中有@Entity注解的时候,会在数据库中生成对应的表结构信息;
使用@Id来指定主键;
使用@GeneratedValue来指定主键的生成方式为自增。
二: 创建jpa repository类操作持久化(CrudRepository);
package com.gmm.server.repository;import com.gmm.server.model.User;import org.springframework.data.repository.CrudRepository;/** * * 此接口继承CrudRepository,他有两个参数, * 参数一是持久化实体类名称;参数二是主键id的类型 * Created by john on 2017-10-01. */public interface UserRepository extends CrudRepository<User, Integer> {}
上面接口继承CrudRepository是因为CrudRepository里面封装了CRUD相关的方法
这个地方也可以写继承JpaRepository
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别;
CrudRepository: 继承Repository,实现了一组CRUD相关的方法;
JpaRepository: 继承PagingAndSortingRepository,实现一组JPA规范相关的方法;
三:创建service类;
package com.gmm.server.Service;import com.gmm.server.model.User;import com.gmm.server.repository.UserRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/** * Created by john on 2017-10-01. */@Servicepublic class UserService { @Autowired private UserRepository userRepository; public Iterable<User> getAll(){ Iterable<User> userList = userRepository.findAll(); return userList; } public User findByIdUser(Integer id){ User user = userRepository.findOne(id); return user; } public User addUser(User user){ User user1 = userRepository.save(user); return user1; } public void deleteUser(Integer id){ userRepository.delete(id); }}
四: 创建controller;
package com.gmm.server.controller;import com.gmm.server.Service.UserService;import com.gmm.server.model.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * Created by john on 2017-10-01. */@RestControllerpublic class UserController { @Autowired private UserService userService; @RequestMapping("/add") public User addUser(){ User user = new User(); user.setId(2); user.setGender("男"); user.setAge(12); user.setName("古美門"); return userService.addUser(user); } /** * 查询所有用户; * @return */ @RequestMapping("/findAll") public Iterable<User> getAll(){ return userService.getAll(); } /** * 查询单个用户; * @return */ @RequestMapping("/findById") public User finById(){ return userService.findByIdUser(2); } @RequestMapping("/delete") public String deleteUser(){ Integer id = 2; userService.deleteUser(id); return "success"; }}
五: 测试完成;
本实例GitHub地址为:https://github.com/gumeimen/springbootjpaa/tree/master
- springboot中使用spring -data-jpa (一)
- springboot中使用spring -data-jpa (二)
- springboot(五):spring data jpa的使用
- SpringBoot(五) :spring data jpa 的使用
- springboot(五):spring data jpa的使用
- springboot(五):spring data jpa的使用
- springboot(五):spring data jpa的使用
- springboot-data-jpa使用
- springboot整合spring data jpa
- springboot集成spring-data-jpa
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- Spring Boot中使用Spring-data-jpa
- Spring Boot中使用Spring-data-jpa
- spring boot中使用spring-data-jpa
- Spring Boot中使用Spring-data-jpa
- Spring Boot中使用Spring-data-jpa
- spring data jpa 使用(一)
- spring data jpa(一)
- BZOJ2190: [SDOI2008]仪仗队
- 前端模块之数据
- Problem-330B-Ceodeforces Road Construction(思维)
- live555学习之一RTSPServer的创建监听并监听客户端
- css实现移动端1px边框怎么解决
- springboot中使用spring -data-jpa (一)
- 静态代理设计模式
- CUDA学习笔记05:Mem申请的所有方式
- office-word使用技巧——自动更正
- 自由幻想UI之背包
- 页面直接跳转到子页面/二级页面
- m到n 的和与重载的使用
- 类加载器
- Java/JDK 8 新特性1.8对于1.7做了哪些优化/改进