JPA 介绍
JPA(Java Persistence API) 是 Sun 官方提出的 Java 持久化规范. 它为 Java 开发人员提供了一种对象 / 关联映射工具来管理 Java 应用中的关系数据. 他的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术, 结束现在 Hibernate,TopLink,JDO 等 ORM 框架各自为营的局面. 值得注意的是, JPA 是在充分吸收了现有 Hibernate,TopLink,JDO 等 ORM 框架的基础上发展而来的, 具有易于使用, 伸缩性强等优点. 从目前的开发社区的反应上看, JPA 受到了极大的支持和赞扬, 其中就包括了 Spring 与 EJB3.0 的开发团队. JPA 是一套规范, 不是一套产品, 那么像 Hibernate,TopLink,JDO 他们是一套产品, 如果说这些产品实现了这个 JPA 规范, 那么我们就可以叫他们为 JPA 的实现产品.
Spring Data JPA
Spring Data JPA 是 Spring 基于 ORM 框架, JPA 规范的基础上封装的一套 JPA 应用框架, 可使开发者用极简的代码即可实现对数据的访问和操作. 它提供了包括增删改查等在内的常用功能, 且易于扩展! 学习并使用 Spring Data JPA 可以极大提高开发效率! spring data jpa 让我们解脱了 DAO 层的操作, 基本上所有 CRUD 都可以依赖于它来实现, 自己写个仓储接口后继承 JpaRepository 即可实现最基本的增删改查功能!
在项目中引用 Spring JPA
1 在 build.gradle 文件中添加包引用
- compile('org.springframework.boot:spring-boot-starter-data-jpa')
- compile('mysql:mysql-connector-java')
2 在 source 的配置文件中添加 mysql 和 jpa 的相关设置
- spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/test
- username: root
- password: root
- driver-class-name: com.mysql.jdbc.Driver
- jpa:
- database: MYSQL
- show-sql: true #显示后台处理的 SQL 语句
- hibernate:
- ddl-auto: update #自动检查实体和数据库表是否一致, 如果不一致则会进行更新数据库表
3 添加数据库表实体, 注意一些注解,@Entity 表示数据表实体,@Table 可以指定数据表名称,@Id 表示是主键,@GeneratedValue 主键升成规则,@Column 表示数据列名称等等.
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import lombok.Data;
- @Data
- @Entity
- @Table(name = "user")
- public class User {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column(name = "Id")
- private int id;
- @Column(name = "Name")
- private String name;
- }
4 为数据表实体添加仓储接口, 因为 JPA 已经有了自己的标准实例, 所以简单的 CURD 实例我们不需要写了, 如果有个性化的操作, 再去定义接口和实现.
- import com.example.springdemo.model.User;
- import org.springframework.data.jpa.repository.JpaRepository;
- public interface SqlUserRepository extends JpaRepository<User, Integer> {
- }
5 最后在 controller 中添加依赖注入的字段, 一般使用 @Autowired 即可
- @RestController
- @RequestMapping("/mysql")
- public class MysqlController {
- @Autowired
- private SqlUserRepository repository;
- /**
- * return list.
- *
- * @return
- */
- @RequestMapping("/list")
- public List<User> dataList() {
- return repository.findAll();
- }
- }
有时间, 再和大家聊聊个性化接口和实现的设计!
来源: http://www.bubuko.com/infodetail-2566576.html