本文参考:spring Data JPA入门 【原创】纯干货,Spring-data-jpa详解,全方位介绍 Spring Data JPA系列教程--入门html
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工做和整合ORM技术,结束如今Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸取了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具备易于使用,伸缩性强等优势。java
注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,若是说这些产品实现了这个JPA规范,那么咱们就能够叫他们为JPA的实现产品mysql
Spring Data JPA 是 Spring 基于 ORM 框架(hibernate)、JPA 规范的基础上封装的一套JPA应用框架,可以使开发者用极简的代码便可实现对数据的访问和操做。它提供了包括增删改查等在内的经常使用功能,且易于扩展。web
spring data jpa让咱们解脱了DAO层的操做,基本上全部CRUD均可以依赖于它来实现。redis
具体点来讲就是只须要编写一个接口,继承spring data jpa相应接口,不须要编写实现类,建立一个实体类,不须要建立相应的数据库表,就可使用基本的CRUD功能。spring
public interface UserRepository extends CrudRepository<User, Long>{}
咱们作Java开发的都知道Spring的强大,到目前为止,企业级应用Spring几乎是无所不能,无所不在,已是事实上的标准了,企业级应用不使用Spring的几乎没有,这样说没错吧。而Spring整合第三方框架的能力又很强,他要作的不只仅是个最先的IOC容器这么简单一回事,如今Spring涉及的方面太广,主要是体如今和第三方工具的整合上。而在与第三方整合这方面,Spring作了持久化这一块的工做,我我的的感受是Spring但愿把持久化这块内容也拿下。因而就有了Spring-data-**这一系列包。包括,Spring-data-jpa,Spring-data-template,Spring-data-mongodb,Spring-data-redis,还有个民间产品,mybatis-spring,和前面相似,这是和mybatis整合的第三方包,这些都是干的持久化工具干的事儿。sql
Spring-data-jpa,表示与jpa的整合,底层都是由hibernate来实现。mongodb
优势:数据库
a、不须要写SQL,SQL会自动生成编程
b、SQL语句不依赖数据库,移植性强,更换数据库较为容易。
缺点:
a、SQL优化比较困难
b、相比mybatis入门门槛较高
适用与需求变化很少的中小型项目中,好比后台管理,erp,orm,oa
Spring Data JPA 提供的编程接口
接口继承关系图:
一、配置环境
MySQL:5.7.17
Springboot:2.1.4.RELEASE
二、添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
三、修改application.properties文件
# DataSource spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # JPA spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto=create-drop
四、实体User
实体的规范、注解、解析下一篇文章会详细描述。
@Entity // 实体 public class User implements Serializable{ private static final long serialVersionUID = 1L; @Id // 主键 @GeneratedValue(strategy=GenerationType.IDENTITY) // 自增加策略 private Long id; // 用户的惟一标识 @Column(nullable = false) // 映射为字段,值不能为空 private String name; @Column(nullable = false) private Integer age; protected User() { // JPA 的规范要求无参构造函数;设为 protected 防止直接使用 } public User(String name, Integer age) { this.name = name; this.age = age; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return String.format( "User[id=%d, name='%s', age='%d']", id, name, age); } }
public interface UserRepository extends CrudRepository<User, Long>{}
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserRepository userRepository; /** * 从 用户存储库 获取用户列表 * @return */ private List<User> getUserlist() { List<User> users = new ArrayList<>(); for (User user : userRepository.findAll()) { users.add(user); } return users; }
}
a、启动MySQL Server
b、建立blog数据库
能够看到自动建立了数据表