Skip to content

Latest commit

 

History

History
38 lines (27 loc) · 2.25 KB

File metadata and controls

38 lines (27 loc) · 2.25 KB

Springboot Study

JPA(Java Persistence API)

Java언어를 통해서 데이터베이스와 같은 영속 계층을 처리하고자 하는 스펙. 실제 데이터베이스에서 사용하는 SQL의 처리를 자동으로 함

ORM(Object Relational Mapping)

객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술 . ORM이 상위 개념 / JPA는 Java라는 언어에 국한된 개념

Thymeleaf

  • JSP와 유사하게 ${}을 별도의 처리 없이 이용 가능
  • Model에 담긴 객체를 화면에서 JavaScript로 처리하기 편함
  • 연산이나 포맷과 관련된 기능을 추가적인 개발 없이 지원
  • 개발 도구를 이용할 때 .html파일로 생성하는데 문제가 없고 별도의 확장자를 이용하지 않음

Annotation

  • @RestController를 이용하여 별도의 화면 없이 데이터 전송 가능
  • @GetMapping을 이용하여 브라우저의 주소창에서 호출이 가능하도로 설정 가능
  • @Query 데이터베이스 고유의 SQL구문을 그대로 활용 가능 (경우에 따라 복잡한 JOIN구문 등을 처리하기 위해서 어쩔 수 없는 선택을 하는 경우에 사용)
  • @RequestBody JSON으로 들어오는 데이터를 자동으로 해당 타입의 객체로 매핑해주는 역할

관계형 데이터베이스

테이블 사이의 관계를 통해서 구조적인 데이터를 표현 . 일대일, 일대다, 다대일, 다대다의 관계를 이용해서 데이터가 서로 간에 어떻게 구성되었는지를 표현

객체지향

'참조'를 통해서 어떤 객체가 다른 객체들과 어떤 관계를 맺고 있는지를 표현

M:N(다대다) 관계의 설계와 구현

대부분의 관계형 데이터베이스는 테이블이라는 정형화된 구조를 가지는 방식으로 만들어짐 이때 칼럼을 지정하면서 최대 크기를 지정하기 때문에 수평적으로 확장은 불가능

반면에 테이블은 Row라는 개념을 이용하여 수직으로 확장이 가능 M:N을 해결하기 위해서는 실제 테이블 설계에서는 매핑(mapping) 테이블을 사용

JPA에서 M:N(다대다) 처리

  • @ManyToMany를 이용해서 처리하는 방식
  • 별도의 엔티티를 설계하고, @ManyToOne을 이용해서 처리하는 방식