ORM(Object Relational Mapping)프로그래밍에서 객체지향의 개념과 관계DB가 유사한 특징을 가지고 있음을 기반으로, 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법에 대한 아이디어가 논의JPA(Java Persistence API)OR
Thymeleaf의 장점 ${}를 별도의 처리없이 사용할 수 있다 Model에 담긴 객체를 JS로 처리하기 편리하다 연산이나 포맷과 관련된 기능을 추가적인 개발없이 지원가능하다 .html파일로 생성하는데 문제가 없고 별도의 확장자를 이용하지 않는다 Dependency
프로젝트는 간단한 방명록 페이지를 만드는 것입니다. 프로젝트는 Spring Boot, War 패키징 방식, 라이브러리는 Spring Boot Devtools, Lombok, Spring Web, Thymeleaf, Spring Data JPA를 사용합니다. buil
동적 쿼리 작성을 위해 Querydsl을 추가합니다.위에 build.gradle은 다른 자료(JPA강의나 현재 교재)에 적혀있는 내용과는 많이 달라졌습니다. Spring Boot가 버전 3.0으로 업그레이드됨에 따라 @Entity가 담겨있는 클래스 등이 javax.pe
실제로 컨트롤러나 서비스 계층 사이에서나, 컨트롤러와 프론트엔드 사이의 데이터 전송은 엔티티를 직접 사용하는 방식이 아닌 DTO를 통해 이루어집니다. 앞선 글에서 언급했듯이 엔티티는 직접적인 수정을 다루기엔 위험하기 때문에, DTO를 통해 Getter/Setter처리를
먼저 JPA에 전달해주고, 전달받는 페이지에 대한 정보를 담은 DTO를 생성하겠습니다.PageRequestDTOPageRequestDTO는 화면에서 전달되는 페이지 번호와 크기를 JPA에게 알려주는 DTO입니다.PageResultDTOPageResultDTO는 JPA의
이전에 서비스 계층에서 register를 만들어두었기 때문에 컨트롤러에서 구현만 하면 등록은 완료됩니다.GuestbookController등록 화면은 HTML Form형태이므로 Get과 Post방식의 통신을 이용합니다. Post에서 redirectAttributes에
이전 글에서 조회까지 만든 후, 조회 창에서 수정 창으로 갈 수 있는 버튼을 만들어두었습니다. 이번 글에서는 수정과 삭제 페이지를 만들고자 합니다. 조회 페이지와 양식과 필요한 데이터는 거의 동일하기 때문에 GetMapping 컨트롤러는 동일하게 사용합니다. 뷰 역
관계 데이터베이스에서 가장 복잡하고도 중요한 개념은 연관관계라고 할 수 있습니다. 두 객체가 1:1관계인지, 1:N관계인지, 아니면 M:N관계인지 파악하고 테이블을 먼저 설계해야 합니다.예제 프로젝트를 생성하겠습니다.그리고 이전 프로젝트에서 사용하던 MariaDB와 타
다음으로는 JpaRepository를 상속받는 인터페이스를 생성하겠습니다.MemberRepositoryBoardRepositoryReplyRepository다음으로는 테스트코드를 생성하겠습니다.테스트 아래에 RepositoryTests들을 생성합니다.먼저 MemberR
백엔드, 특히 데이터베이스 부분을 작업할 때 빼놓을 수 없는 개념, 그리고 가장 중요한 개념은 조인 연산이라고 생각합니다.저도 대략 2년전부터 프로젝트로 계속 백엔드를 맡다보니 조인 연산을 많이 접해보긴 했지만 정리해두지 않으면 잊어버리기 쉬운 개념이라 이번 기회에 정
목록 화면에서는 각 게시물이 있고, 옆에는 댓글 수와 작성자가 표시되어야 합니다.BoardRepository에 이에 해당하는 쿼리를 추가하겠습니다.BoardRepository테스트코드를 아래와 같이 작성합니다.BoardRepositoryTests가장 오른쪽의 Reply
이전 guestbook 예제의 템플릿을 먼저 가져오겠습니다. 그리고 BoardController를 생성한 뒤, 목록화면에 접근을 처리하는 메서드까지 생성해두겠습니다. BoardController 다음으로는 list 페이지를 생성하겠습니다. list.html gu
이제 페이지는 모두 완성했습니다. 하지만 한가지 빠진 부분이 있는데, 바로 키워드 검색입니다. JPQL을 이용한 검색은 Querydsl을 이용하여 할 것이므로 이전 guestbook 예제에서 build.gradle 설정을 가져옵니다.build.gradleclean 후
댓글은 게시물의 상세 페이지로 들어가서, 댓글 버튼을 눌렀을 때 확인할 수 있도록 설계합니다. 댓글은 JSON 형태로 뷰에 전달합니다. AJAX(Asynchronous JavaScript and XML) 댓글은 Ajax 방식으로 처리합니다. 비동기 방식이기 때문에 웹
관계 데이터베이스 수업을 들었었다면 M:N관계에 있는 테이블의 설계방법을 다들 알고 계실 것입니다. 바로 새로운 테이블을 만들고, 두 엔티티의 기본키를 외래키로 참조하는 방법입니다. JPA에서는 M:N관계를 설정해줄 수 있는 방법으로는 2가지가 있습니다. @Many
먼저 Repository부터 생성하겠습니다. MovieRepository와 MovieImageRepository를 생성하고 JpaRepository를 상속받도록 합니다. MovieRepositoryMovieRepository이어서 테스트 코드를 통해 DB에 Movie
Servlet 3버전부터는 파일 업로드 라이브러리가 자체적으로 탑재되어 있다고 합니다. 따라서 SpringBoot 구동 시 Tomcat을 이용한다면 별도의 라이브러리 설치 없이 설정만 해주면 됩니다.application.propertieslocation에는 임시파일을
앞서 배운 내용들을 응용하여 영화와 리뷰 리스트를 보여주는 페이지를 만들겠습니다.먼저 이전에 사용하던 List 템플릿을 다시 static 폴더에 넣어 이용하겠습니다. 또한 별도로 생성한 Layout 타임리프 페이지는 templates 폴더에 넣어 이용하겠습니다.영화 등
이전에 사용했던 PageRequestDTO와 PageResultDTO를 이용하여 목록 페이지를 생성하겠습니다.MovieRepository에서 목록을 출력하기 위한 데이터를 받아오는 메서드는 이미 설계를 했었는데, movie, movieImage, 평점, 리뷰수라는 객체
영화 번호를 누르면 조회페이지로 이동합니다. 서비스 계층에서 영화 번호를 이용하여 MovieDTO를 가져오는 작업부터 진행하겠습니다.