AI智能
改变未来

【扫盲】SpringDataJPA

一句话,不罗嗦: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操作,我们只需要定义好自己的业务实体类,然后就可以自动生成数据库表,我们只需要专心编码业务逻辑层即可。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【扫盲】SpringDataJPA