一句话,不罗嗦:JPA是Java Persistence API的简称,Java持久层API
扫盲JPA注解
@Entity: 注解实体对象
@Table:注解实体对象映射数据库表
@ID:注解数据库主键
@GeneratedValue:注解主键生成策略
@Column:注解实体属性与数据库表字段映射
@Query:在方法上查询语句
@OneToOne:一对一
@OneToMany:一对多
@ManyToOne:多对一
@ManyToMnay:多对多
扫盲数据访问层
Dao层继承JpaRepository,例如用户对象User
public interface UserRepository extends JpaRepository<User,Long>
一般公司内部都会自己写一个基础的Dao类,封装基本的CRUD操作,以及分页操作,SpringDataJPA也是酱紫,为我们提供了一个JpaRepository。JPA只是一个API,实现一般使用hibernate,这里记录下相关属性配置:
spring.jpa.open-in-view=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
基本就ok了,我们再来个service,serviceImpl
public interface UserService {
User get(Long id);
void delete(Long id);
----------------------------------------------------
@Service
public class UserServiceImpl implements UserService {
@Autowired
protected UserRepository userRepository;
@Override
public User get(Long id) {
return this.userRepository.findOne(id);
}
@Override
@Transactional
public void delete(Long id) {
this.userRepository.delete(id);
}
然后我们写几个接口API测试一下,这里使用@RestController
@RestController
@RequestMapping(\"/users\")
public class UserTestApi {
@Autowired
private UserService userService;
@RequestMapping(value = \"/{id}\", method =RequestMethod.GET)
public User getUser(@PathVariable Long id){
User user = this.userService.load(id);
return user;
}
可以使用curl命令验证下:
curl -X GET --header \'Accept: application/json\' \'http://localhost:8080/users/1\'
JPA还是很清晰明了的,为我们封装了基本的CRUD操作,我们只需要定义好自己的业务实体类,然后就可以自动生成数据库表,我们只需要专心编码业务逻辑层即可。