이 코드에서 License 클래스는 스프링 데이터(Spring Data) 프레임워크가 Postgres 데이터베이스 내 licenses 테이블의 데이터를 자바 객체로 매핑하도록 도와주는 여러 JPA 애너테이션을 사용한다. @Entity 애너테이션은 이 자바 POJO가 데이터를 보관할 객체로 매핑될 것을 스프링에 알려 준다. @Table 애너테이션은 매핑할 데이터베이스 테이블을 스프링 및 JPA에 알려 준다. @Id 애너테이션은 데이터베이스의 기본 키를 식별해 준다. 마지막으로 데이터베이스의 모든 칼럼은 @Column 애너테이션을 가진 속성(attribute)으로 각각 매핑된다.
Tip
클래스의 속성이 데이터베이스의 칼럼 이름과 동일하다면 @Column 애너테이션을 추가하지 않아도 된다.
스프링 데이터와 JPA 프레임워크는 데이터베이스에 액세스할 수 있는 기본 CRUD 메서드를 제공한다. 표 5-3은 메서드 일부를 보여 준다.
▼ 표 5-3 스프링 데이터와 JPA 프레임워크 CRUD 메서드
메서드 |
설명 |
count() |
가용한 엔터티 수 반환 |
delete(entity) |
전달된 단일 엔터티 삭제 |
deleteAll() |
저장소에 관리되는 모든 엔터티 삭제 |
deleteAll(entities) |
전달된 모든 엔터티 삭제 |
deleteById(id) |
전달된 ID의 엔터티 삭제 |
existsBy(id) |
전달된 ID의 엔터티 존재 여부 반환 |
findAll() |
모든 인스턴스 반환 |
findAllById(ids) |
해당 ID가 있는 T 타입의 모든 항목 반환 |
findById(id) |
ID로 엔터티 검색 |
save(entity) |
전달된 단일 엔터티 저장 |
saveAll(entities) |
전달된 모든 엔터티 저장 |