본문 바로가기

Spring Boot36

스프링 부트(Spring Boot) JPA 게시판 - CRUD 처리하기 [Thymeleaf, MariaDB, IntelliJ, Gradle] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. 본 게시판 프로젝트에서 데이터는 MariaDB로 관리하며, MariaDB가 설치되어 있지 않으시다면, 선행 작업으로 MariaDB 설치하기를 꼭! 진행해 주세요. 이전 글에서는 JPA 게시판 프로젝트 진행을 위해, 스프링 부트 프로젝트를 생성해 보았습니다. 이번에는 스프링 부트와 MariaDB를 연동하고, 게시판에 사용될 회원 테이블을 생성한 후 JPA를 가볍게 경험하는 시간을 가져볼 건데요. DB가 익숙하지 않으시거나, 데이터 소스(Data Source)에 대한 개념이 하나도 잡혀있지 않으신 분들은 아래 글을 가볍게 읽어보시기를 권장드립니다. 스프링 부트(Spring Boot) - 게시판 Mar.. 2023. 10. 26.
스프링 부트(Spring Boot) JPA 게시판 - 프로젝트 생성하기 [Thymeleaf, MariaDB, IntelliJ, Gradle] 본 JPA 게시판 프로젝트 관련 안내사항 JDK는 11 버전을 사용합니다. 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 프로젝트(애플리케이션) 설정은 자바(Java) 기반의 설정을 사용합니다. 데이터베이스는 MariaDB를 사용합니다. DB와의 통신 역할에는 Spring Data JPA를 사용합니다. 개발 도구(IDE)는 인텔리제이(IntelliJ)를 사용합니다. 프로젝트 빌드 도구는 그레이들(Gradle)을 사용합니다. 본 글은 Spring Boot 프로젝트 생성 후 곧바로 실습할 수 있는 환경이 모두 구성되어 있다는 가정하에 진행됩니다. (JDK 설치, workspace 세팅, Java 환경 변수 설정, IDE 설치, MariaDB 설치, DBMS 툴 .. 2023. 9. 2.
스프링 부트(Spring Boot) - 5분 안에 H2 Database와 JPA 연동해보기 1. H2 Database란? H2 DB는 자바 기반의 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 보통 테스트 단계 또는 작은 규모의 프로젝트에서 사용되며, Gradle 또는 Maven에 의존성만 추가해 주면 쉽고 빠르게 H2 DB를 이용할 수 있습니다. (공식 사이트에서 설치해서 사용할 수도 있습니다.) H2 DB는 In-Memory Mode, Embedded Mode, Server Mode 총 세 가지의 모드를 지원해 주는데요. 여기서는 In-Memory Mode와 Embedded Mode를 이용해서 데이터를 관리하는 방법을 다루게 됩니다. 1-1) In-Memory Mode 애플리케이션(WAS) 구동 시 H2 DB 데이터를 메모리에 올려서 관리하는 방식입니다. 애플리케이션이 종료되.. 2023. 6. 18.
스프링 부트(Spring Boot) 게시판 - 첨부파일 다운로드하기 (다중 파일 업로드 & 다운로드 구현하기 3/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 게시글에 등록된 첨부파일을 상세 페이지에서 조회하는 방법과, 게시글을 수정할 때 기존에 등록된 첨부파일을 유지하는 방법, 그리고 첨부파일을 추가/변경/삭제하는 방법을 알아보았습니다. 이번에는 다중 첨부파일 업로드/다운로드 처리 중 마지막 단계인, 첨부파일을 다운로드하는 방법을 알아볼 건데요. 파일 다운로드 기능은 업로드 처리에 비해 비교적 로직이 간단합니다. 1. FileMapper 인터페.. 2023. 6. 12.
스프링 부트(Spring Boot) 게시판 - 첨부파일 추가/수정/삭제 및 기존 파일 유지하기 (다중 파일 업로드 & 다운로드 구현하기 2/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 첨부파일 관리용 테이블(tb_file)을 생성하고, 애플리케이션 전역에서 사용할 수 있는 파일 업로드용 유틸 클래스를 구현해서 첨부파일을 다중으로 업로드하는 방법을 알아보았습니다. 이번에는 게시글에 등록된 첨부파일을 상세 페이지에 출력해 주는 기능을 우선적으로 구현하고, 기존에 첨부파일이 업로드된 게시글을 수정할 때 첨부파일을 추가/변경/삭제하는 방법과, 파일에 변화가 없을 때 기존 첨부파.. 2023. 6. 3.
스프링 부트(Spring Boot) 게시판 - 다중 첨부파일 업로드하기 (다중 파일 업로드 & 다운로드 구현하기 1/3) [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글까지는 게시판에 회원 기능을 구현하고, 인터셉터와 세션을 이용해서 로그인이 되지 않은 회원은 게시판을 이용할 수 없도록 처리해 보았습니다. 지금부터는 본 글을 시작으로 총 세 번에 걸쳐 파일 업로드/다운로드 기능을 구현해 볼 건데요. 단일 파일의 경우에는 게시글(tb_post) 테이블 하나로 처리가 가능하지만, 댓글과 같이 하나의 게시글에서 여러 개의 파일을 관리할 수 있도록 다중으로 파일을 업로.. 2023. 5. 19.
스프링 부트(Spring Boot) 게시판 - 로그인/로그아웃 & 로그인 세션(Login session) 체크 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 회원 테이블을 생성하고, 레이어 팝업을 이용해 회원가입 기능을 구현해 보았습니다. 이번에는 로그인과 로그아웃 기능을 구현하고, 인터셉터를 이용해서 로그인이 되어있지 않은 경우에는 게시판에 접근할 수 없도록 컨트롤해 보도록 하겠습니다. 1. MemberService - 로그인 메서드 추가하기 먼저 MemberService에 아래 메서드를 추가해 주세요. /** * 로그인 * @param lo.. 2023. 5. 11.
스프링 부트(Spring Boot) 게시판 - 회원가입 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 History API를 이용해서 비동기(Ajax) 페이징 처리의 새로고침 문제를 해결해 보았습니다. 이번을 포함해서 두 차례예 걸쳐 게시판에 회원 기능을 적용해 볼 건데요. 본 글에서는 DB에 회원 데이터를 관리할 테이블을 생성한 후 회원가입 기능을 구현해 보도록 하겠습니다. 1. 회원 테이블 칼럼 구조 아래 표는 회원 테이블의 전체 칼럼 구조입니다. 칼럼 설명 id 테이블의 PK(Prim.. 2023. 5. 9.
스프링 부트(Spring Boot) 게시판 - Ajax(비동기) 페이징 새로고침 시 페이지 번호 유지하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 jQuery의 Ajax를 이용해서 REST API 방식으로 댓글에 페이징을 적용해 보았습니다. 하지만 개선해야 할 점이 한 가지 남아있습니다. 게시글과 같은 동기 처리는 페이지를 이동하는 시점에 주소(URL)가 변경되기 때문에 브라우저를 새로고침 해도 페이지 번호와 검색 조건이 유지되지만, Ajax는 페이지 번호에 해당되는 데이터를 조회하되 주소는 변경되지 않기 때문에 브라우저를 새로고침 .. 2023. 5. 1.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 페이징(Paging) 처리하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 댓글 삭제 기능을 구현했고, 이를 끝으로 댓글 CRUD 처리가 모두 완료되었습니다. 이번에는 게시글 페이징과 검색 처리에서 구현한 클래스들을 이용해서 댓글에 페이징을 적용해 볼 건데요. 지금까지와 마찬가지로 jQuery의 Ajax를 이용해서 화면의 움직임 없이 페이지를 이동하도록 처리해 보도록 하겠습니다. 1. 댓글 조회용 DTO 클래스 생성하기 우선 java 디렉터리에 다음의 클래스를 생.. 2023. 4. 25.