JPA

    [Querydsl, pageable] slice를 이용한 무한 스크롤

    들어가기 전에 프로젝트를 진행하면서, 빵집의 상세 페이지에서 메뉴 더보기 클릭 시, 해당 빵집에 존재하는 모든 메뉴를 순차적으로 보여주어야 했습니다. 이때, 아래로 쭉 내렸을 때 메뉴가 더 존재한다면 화면에 더 뿌려주고자 무한 스크롤을 구현하였습니다. 참고 사항 하기 예시는 모두 page index가 1부터 시작한다고 가정하고 진행한 것이기 때문에, 만약 page를 0부터 시작하고자 한다면, 변경이 필요할 수 있습니다. 페이징 기법 종류 진행하기 앞서, 간단하게 페이징 기법 종류에 대해 알아보고자 합니다. 먼저 아래 왼쪽 사진의 경우는, 일반적인 paging 기법입니다. 각 index를 눌러 페이지를 호출하고 해당 페이지에 해당하는 데이터를 뿌려줍니다. 반면, 오른쪽 사진의 경우는 더보기 버튼을 클릭하여..

    [SpringBoot] 게시판 만들기 v2.2 (머스테치로 화면 구성하기)

    들어가기 전에 하기 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저)를 공부하여 작성한 내용입니다. 템플릿 엔진 웹 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 의미합니다. 서버 템플릿 엔진 예: JSP, Freemarker JSP의 경우 명확한 서버 템플릿 엔진은 아니나, View의 역할만 하도록 구성할 때에는 템플릿 엔진으로써 사용이 가능합니다. 클라이언트 템플릿 엔진 예: React의 View, Vue의 View 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달합니다. 반면 자바스크립트는 브라우저 위에서 작동합니다. 즉, 자바스크립트 코드가..

    [SpringBoot] 게시판 만들기 v2.1 (등록/수정/조회 API 만들기)

    들어가기 전에 하기 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저)를 공부하여 작성한 내용입니다. 등록/수정/조회 API 만들기 API를 만들기 위해서는 총 3개의 클래스가 필요합니다. Request 데이터를 받을 DTO API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service Service에서 비즈니스 로직을 처리해야 한다고 생각할 수 있으나, Service는 트랜잭션, 도메인 간 순서 보장의 역할만 합니다. Spring 웹 계층 Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역입니다. 이외에도 필터, 인터셉터, 컨트롤러 어드바이스 등 외부 요청과 응답에 대한 전반적인 영역입니..

    [SpringBoot] JPA로 데이터베이스 다루기

    들어가기 전에 하기 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저)를 공부하여 작성한 내용입니다. SQL 매퍼를 이용해 데이터베이스의 쿼리를 작성하는 경우가 많습니다. 이 경우, 실제 개발하는 시간보다 SQL을 다루는 시간이 많았습니다. 이러한 문제점을 해결하기 위해 JPA라는 자바 표준 ORM 기술이 생겨났습니다. 이번 포스팅에서는 JPA를 프로젝트에 적용해보도록 하겠습니다. Mybatis는 ORM이 아닌, SQL Mapper입니다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑합니다. JPA 현대의 웹 어플리케이션에서는 관계형 DB는 빠질 수 없는 요소입니다. 그로 인해 객체를 관계형 데이터베이스에서 관리하는 것이 중요합니다. 관계형 데이터베이스가 웹 서비스..

    [SpringBoot] 게시판 구현하기 17 (스프링 데이터 JPA 사용해보기)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 JPA에 대해 알아보겠습니다. JPA JPA(Java Persistence API)란, 자바 객체와 데이터베이스 테이블 간 매핑을 처리하는 ORM(Object Relational Mapping) 기술의 표준입니다. ORM은 쉽게 말해 객체와 관계를 설정하는 것으로, 특정 언어에 종속적인 개념이 아닌 객체와 관계형 데이터베이스를 매핑시키는 것입니다. JPA는 각 기능의 동작이 어떻게 되어야 한다는 것을 정의한 기술 명세이기 때문에 해당 명세에 따라 실제로 기능을 구현한 구현체가 필요합니다. 이렇게 구현된 제품이나 프레임워크로 하이버네이트, 이클립스링크 등이 있고, 이러한 JPA 구현체를 JP..