Java언어를 통해서 데이터베이스와 같은 영속 계층을 처리하고자 하는 스펙. 실제 데이터베이스에서 사용하는 SQL의 처리를 자동으로 함
객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술 . ORM이 상위 개념 / JPA는 Java라는 언어에 국한된 개념
- JSP와 유사하게 ${}을 별도의 처리 없이 이용 가능
- Model에 담긴 객체를 화면에서 JavaScript로 처리하기 편함
- 연산이나 포맷과 관련된 기능을 추가적인 개발 없이 지원
- 개발 도구를 이용할 때 .html파일로 생성하는데 문제가 없고 별도의 확장자를 이용하지 않음
- @RestController를 이용하여 별도의 화면 없이 데이터 전송 가능
- @GetMapping을 이용하여 브라우저의 주소창에서 호출이 가능하도로 설정 가능
- @Query 데이터베이스 고유의 SQL구문을 그대로 활용 가능 (경우에 따라 복잡한 JOIN구문 등을 처리하기 위해서 어쩔 수 없는 선택을 하는 경우에 사용)
- @RequestBody JSON으로 들어오는 데이터를 자동으로 해당 타입의 객체로 매핑해주는 역할
테이블 사이의 관계를 통해서 구조적인 데이터를 표현 . 일대일, 일대다, 다대일, 다대다의 관계를 이용해서 데이터가 서로 간에 어떻게 구성되었는지를 표현
'참조'를 통해서 어떤 객체가 다른 객체들과 어떤 관계를 맺고 있는지를 표현
대부분의 관계형 데이터베이스는 테이블이라는 정형화된 구조를 가지는 방식으로 만들어짐 이때 칼럼을 지정하면서 최대 크기를 지정하기 때문에 수평적으로 확장은 불가능
반면에 테이블은 Row라는 개념을 이용하여 수직으로 확장이 가능 M:N을 해결하기 위해서는 실제 테이블 설계에서는 매핑(mapping) 테이블을 사용
- @ManyToMany를 이용해서 처리하는 방식
- 별도의 엔티티를 설계하고, @ManyToOne을 이용해서 처리하는 방식