JPA 是Java持久化的一种API规范,Spring Data JPA在JPA之上做了一些扩展。而hibernate是支持JPA的一个ORM框架。
如何使用Spring Data JPA呢,以Spring boot作为例子,加入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
在application.yml中的Spring节点下面配置:
spring:
jpa:
hibernate:
#可选配置 create create-drop update validate
ddl-auto: update
show-sql: true
database: MYSQL #这里使用MySQL
然后新建一个实体类
package xyz.twj.micro.service.enties;
import javax.persistence.*;
import java.util.Date;
@Entity
public class UserEntity {
@Id //主键
@GeneratedValue //自动生成的值
private Integer id;
private String name;
@Temporal(TemporalType.DATE) //定义时间类型
private Date birthday;
@Column(insertable = false, updatable = false) //不需要插入和更新的字段
@Temporal(TemporalType.TIMESTAMP)
private Date ctime;
@Transient //不需要持久化的字段
private Integer minAge;
//get/set方法........
}
这个时候启动项目,如果数据库没有建表,那么hibernate会自动在数据库中建表。
CURD操作,新建Dao接口:
public interface UserRepository extends JpaRepository<UserEntity, Integer>, JpaSpecificationExecutor {
}
这个接口继承的JpaRepository接口中定义了常用的简单操作,并且spring在运行时动态代理接口的实现类,所以直接在bean中声明即可:
/**
* @author : TianWenjian
*/
@RestController
public class DemoController {
@Autowired
UserRepository userRepository;
@GetMapping("/micro-service")
public Map service(){
return ResultUtils.succeed("ok", userRepository.findAll());
}
@GetMapping("/add")
public Map add(){
UserEntity userEntity = new UserEntity();
userEntity.setBirthday(new Date());
userEntity.setName("小星");
userRepository.save(userEntity);
return ResultUtils.succeed("ok");
}
@GetMapping("/update")
public Map update(){
UserEntity userEntity = new UserEntity();
userEntity.setBirthday(new Date());
userEntity.setName("小刚");
userEntity.setId(2);
userRepository.save(userEntity);
return ResultUtils.succeed("ok");
}
}
当然简单的查询操作满足不了项目要求,Spring Data JPA还支持原生SQL、Criteria,QueryDSL多种查询方式。(未完待续)
网友评论