게시판프로젝트

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

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

    [SpringBoot] 게시판 구현하기 16 (REST API로 변경하기)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이전 포스팅에서는 RESTful 게시판으로 변경하는 방법을 살펴보았습니다. 앞선 구현을 가지고는 REST API를 만들었다고 이야기하기는 어렵습니다. 이번 포스팅을 통해 실제 어플리케이션 개발에서 프론트와 백엔드가 어떻게 나뉘는지 살펴보도록 하겠습니다. 일반적인 어플리케이션은 백엔드 서버와 클라이언트로 나뉩니다. 여기서 클라이언트는 웹 페이지가 될 수도 있고, 안드로이드나 iOS 앱이 될 수도 있습니다. 그리고, 백엔드 서버는 이러한 클라이언트의 요청을 수행하는 API를 만듭니다. 지금까지는 하나의 어플리케이션에서 Thymeleaf와 jQuery를 이용해 화면을 개발했습니다. 그리고, 이를 실행하기 위한 로..

    [SpringBoot] 게시판 구현하기 14 (존재하는 게시글에 파일 추가하기) - 책 응용편

    참고 사항 하기 내용을 실습하게 되면, 게시판 구현하기 15를 실습할 때 문제가 생길 수 있습니다. 존재하는 게시글에 파일을 추가하기 위해 boardDetail.html 내 form 태그에 enctype을 설정하였는데, 이 부분이 추후 RESTful로 변경할 때에 POST로만 form을 사용할 수 있는 문제를 일으킵니다. 따라서, 아래 내용은 참고만 하면 좋겠습니다. 들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)"를 공부하며 만든 springboot 프로젝트 내에 추가로 구현한 부분에 대해 적은 글입니다. 잘못된 부분이 있을 수 있으니 참고만 해주시면 좋을 것 같습니다. "스프링부트 시작하기" 책에는 신규 게시글을 만들 때 파일 업로드만 가능하여, 기존에 업로드한 게시글에 파일을 추가하는..

    [SpringBoot] 게시판 구현하기 12 (파일 업로드와 다운로드)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 파일 업로드와 다운로드에 대해 살펴보도록 하겠습니다. 웹 어플리케이션에서 파일 관련 기능은 매우 중요합니다. 일반적인 게시판만 해도 파일을 첨부할 수 있고, 대다수의 SNS는 이미지와 함께 글을 작성합니다. 쉬워보일 수 있으나, 내부적으로는 구현해야 할 기능이 많아 여러 가지를 생각해야 합니다. 예를 들어 사용자 편의를 위해 파일 업로드 시 드래그 앤 드롭 기능, 첨부파일의 유효성 검사, 파일 전송의 진행률이나 예외처리 등 고려할 것들이 많습니다. 여기서는 파일 업로드 및 다운로드 시 핵심적인 내용에 대해서만 다룰 것입니다. 파일 첨부를 위한 기본 설정 먼저 파일 업로드와 다운로드 기능 구..

    [SpringBoot] 게시판 구현하기 7 (스프링의 다양한 기능 살펴보기 - 로그)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 포스팅에서는 로그에 대해 살펴보도록 하겠습니다. Log(로그) 개발 시 발생할 수 있는 에러 확인 및 유지보수 등을 위해 로그를 분석해야할 필요성이 있습니다. 이에 따라 사용자가 보기 쉽도록 로그를 남겨야합니다. Logback이란? 오랫동안 널리 사용되고 검즈된 Log4j를 기반으로 작성된 로그 라이브러리입니다. Log4j와 비교해서 성능이 10배정도 빠르고 메모리 사용량이 적습니다. Logback을 사용한 로그 설정 변경의 경우, 서버를 따로 재시작하지 않아도 바로 반영된다는 장점을 가지고 있습니다(Logback은 로그 설정이 변경될 경우 내부의 설정 변화 감지 스레드가 이를 감지하여 반영하기 때문,..

    [SpringBoot] 게시판 구현하기 6 (게시글 수정 및 삭제 기능 만들기)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 시간에는 앞서 등록한 게시글 상세 화면에서 게시글 수정 및 삭제할 수 있는 기능을 넣어보도록 하겠습니다. 뷰 변경하기 먼저 기존에 만든 게시글 상세 화면을 약간 수정하여 수정 및 삭제 기능을 추가하겠습니다. boardDetail.html 내용을 아래와 같이 수정합니다. ADD START ~ ADD END 사이 내용들만 추가하면 됩니다. 게시글 상세 화면 게시글 상세내용 글 번호 조회수 작성자 작성일 제목 : 데이터 전송을 위해 을 추가합니다. : form을 이용하여 데이터를 전송할때는 입력창(, 등)의 내용만 전달됩니다. 그래서, 입력창이 아닌 데이터들 중 글을 수정하거나 삭제할 때 필요한 글 번호를 ..

    [SpringBoot] 게시판 구현하기 5 (게시글 상세 화면 만들기)

    들어가기 전에 하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다. 이번 시간에는 앞서 등록한 게시글을 확인할 수 있는 상세 화면을 만들어 보겠습니다. 게시글 상세 화면 만들기 게시글 상세 화면 만들기 전 조회 로직의 흐름에 대해 먼저 살펴보겠습니다. 목록 화면에서 상세 내용을 확인하고 싶은 글을 선택합니다. 즉, 목록 화면에서 선택된 글의 상세 화면을 호출하는 기능이 필요합니다. 선택된 글의 상세 내용을 조회하고 조회수를 증가시킵니다. 즉, 상세 내용을 조회할 때 비즈니스 로직은 목록 조회와 다르게 두 가지가 됩니다. 비즈니스 로직을 처리하는 서비스 영역에 두 가지 작업(게시글 조회 & 조회수 증가)을 진행해야 합니다. 조회된 글 내용을 화면에 표시합니다. 목록 화면 수정..