[Spring] JPA의 기본이해

개발log·2024년 3월 19일

Spring

목록 보기
7/16
post-thumbnail

JPA

JAVA 객체와 데이터베이스의 관계를 매핑(ORM)하는 기술에 대한 인터페이스

  • @Entity(name = "user") 괄호 안 데이터베이스와 매핑
  • JpaRepository<User, Long> CRUD 제공
  • @GeneratedValue id가 어떤 방식으로 생성 되는지
  • findAll() SELECT *과 같음
  • save() insert into와 같음

JpaRepository<User, Long>

Spring Data JPA에서 제공하는 기본적인 CRUD(Create, Read, Update, Delete) 기능을 제공하는 인터페이스

  • User: 데이터베이스의 특정 엔터티를 나타내는 클래스
  • Long: 엔터티의 주요 키(primary key)의 타입

예제 코드

전제 - applicaton.yaml을 통해 데이터베이스 기본 연결사항을 작성해야 함.

UserRepository - JpaRepository를 상속받아 CRUD 기능 사용

public interface UserRepository extends JpaRepository<UserEntity, Long> {
}

UserEntity - 데이터베이스 'user'와 매핑

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity(name = "user")// 괄호 안 데이터베이스와 매핑
public class UserEntity {
    @Id// 주요 키(primary key)를 나타내는 어노테이션
    @GeneratedValue(strategy = GenerationType.IDENTITY)// id가 어떤 방식으로 생성 되는지
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

UserApiController - CRUD기능 사용하는 인터페이스의 findAll(), save() 메서드 호출

@RequiredArgsConstructor //생성자 자동 생성
@RestController
@RequestMapping("/api/user")
public class UserApiController {
    private final UserRepository userRepository;
    @GetMapping("/find-all")
    public List<UserEntity> findAll(){
        return userRepository.findAll();
    }

    @GetMapping("/name")
    public void autoSave(@RequestParam String name){ // 요청 파라미터를 매개변수로
        var user = UserEntity.builder().name(name).build();

        userRepository.save(user);
    }
}

profile
나의 개발 저장소

0개의 댓글