본문 바로가기

전체 글51

스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 수정 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 특정 게시글에 등록된 댓글 리스트(목록)를 출력하는 기능을 구현해 보았습니다. 이번에는 기존에 등록된 댓글을 수정하는 기능을 구현해 볼 건데요. 흔히 모달(Modal)이라고 불리는 레이어 팝업(Layer Popup)을 이용해 보겠습니다. 1. 댓글 API 컨트롤러(Controller) - 메서드 추가하기 CommentApiController에 다음의 두 메서드를 추가해 주세요. // 댓글 .. 2023. 4. 20.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 리스트(목록) 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 @RestController와 jQuery의 Ajax를 이용해서 화면의 움직임(이동 또는 새로고침) 없이 댓글을 등록하는 기능을 구현해 보았습니다. 이번에는 특정 게시글에 등록된 댓글을 출력하는 기능을 구현해 볼 건데요. 게시글의 경우, 게시글이 생성/수정/삭제되는 시점에 리스트 페이지로 리다이렉트 하도록 처리했었습니다. 댓글은 등록/수정/삭제된 시점에 페이지를 이동하거나 새로고침 하지 않.. 2023. 4. 20.
이클립스(Eclipse & STS)에 롬복(Lombok) 설치하기 롬복은 테이블을 구조화한 도메인 클래스(Entity 또는 DTO, VO)에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 어노테이션으로 사용할 수 있도록 해주는 라이브러리입니다. 이외에도 몇 가지 기능이 더 있지만, 보통 도메인 클래스에서 getter/setter 메서드와 생성자 처리에 주로 사용합니다. 롬복의 장점에 대해 짧게 말씀드리겠습니다. 어떤 테이블의 칼럼이 50개라고 가정했을 때 도메인 클래스에는 칼럼 개수만큼 멤버(인스턴스) 변수가 선언되어야 합니다. 각 멤버 변수에 대한 getter/setter를 생성하면 코드는 200줄(Line)을 훌쩍 넘어버리게 됩니다. 그리고, 혹시라도 칼럼명이 변경된다면 변수명과 getter/setter를 모두 수.. 2023. 4. 19.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 등록 기능 구현하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 댓글 데이터를 관리할 tb_comment 테이블을 생성하고, 매퍼(Mapper)와 서비스(Service) 영역까지 댓글 CRUD 기능을 구현해 보았습니다. 이번에는 댓글 등록 기능을 구현해 볼 건데요. @RestController 어노테이션과, jQuery의 Ajax를 이용해서 화면의 움직임(이동 또는 새로고침) 없이 데이터를 주고받는 비동기 처리에 대해 알아보겠습니다. 1. REST AP.. 2023. 4. 18.
스프링 부트(Spring Boot) 게시판 - REST API 방식으로 댓글 CRUD 처리하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 REST API란 무엇이며, 어떤 방식으로 데이터에 접근해야 하는지 가볍게 알아보았습니다. 지금부터 게시판에 댓글 기능을 구현해 볼 건데요. 이번 글에서는 매퍼(Mapper)와 서비스(Service)에 댓글 CRUD 로직을 작성해 두고, 다음 글부터 @RestController와 jQuery의 Ajax를 이용해서 비동기 방식의 화면(HTML) 처리를 진행합니다. 1. 댓글 테이블 구조 칼럼.. 2023. 4. 17.
스프링 부트(Spring Boot ) - REST API 알아보기 이전 글을 끝으로 페이징과 검색 처리, 그리고 검색 조건과 이전 페이지 정보를 유지하는 기능의 구현이 완료되었습니다. 다음 글부터는 게시판에 댓글 CRUD 기능을 구현하는데요. 이번에는 댓글 처리에서 이용할 REST API에 대해 맛보기 시간을 가져보겠습니다. 이번 글은 구멍가게 코딩단의 코드로 배우는 스프링 웹 프로젝트 서적을 참고해서 포스팅하였습니다. 1. REST란? REST는 "Representational State Transfer"의 약어로, 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념입니다. 스마트폰과 태블릿 등 서버에 접근하는 디바이스의 종류가 다양해지고 있기에 디바이스의 종류에 상관없이 공통으로 데이터를 처리할 수 있도록 하는 방식을 REST라고 합.. 2023. 4. 15.
스프링 부트(Spring Boot) - 페이징(Paging) & 검색(Search) 처리하기 2/2 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글에서는 페이징과 검색 기능에 필요한 공통 클래스들을 정의하고, 게시글 리스트 페이지에 페이징을 적용해 보았습니다. 이번에는 기존의 페이징에 게시글 검색 기능을 추가하고, 특정 페이지에서 어떠한 작업(액션)이 발생했을 때 이전 페이지 정보와 검색 조건을 유지시키는 기능을 구현해 보겠습니다. 이번 글은 구멍가게 코딩단의 코드로 배우는 스프링 웹 프로젝트 서적을 참고해서 포스팅하였습니다. 1. 검색 처.. 2023. 4. 13.
스프링 부트(Spring Boot) - 페이징(Paging) & 검색(Search) 처리하기 1/2 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis] 본 게시판 프로젝트는 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다. DBMS 툴은 DBeaver를 이용하며, DB는 MariaDB를 이용합니다. (MariaDB 설치하기) 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 이전 글을 끝으로, 게시글 CRUD 처리와 개발 단계에서의 필수 설정이 모두 마무리되었습니다. 이번에는 게시글, 댓글, 회원 등 페이징 기능이 필요한 어느 곳에서나 공통으로 사용할 수 있는 클래스를 정의해서 페이징을 적용해 보겠습니다. 이번 글은 구멍가게 코딩단의 코드로 배우는 스프링 웹 프로젝트 서적을 참고하여 작성했습니다. 1. 페이징(Paging)이란? 페이징은 사용자에게 데이터를 제공할 때, 전체.. 2023. 4. 12.
스프링 부트(Spring Boot) - AOP와 트랜잭션(Transaction) 이전 글에서는 애플리케이션에 인터셉터를 적용해서 사용자가 요청한 기능의 URI를 로그로 출력하는 방법을 알아보았습니다. 이번 글에서는 스프링의 핵심 기능 중 하나인 AOP를 애플리케이션에 적용하고, 트랜잭션(Transaction)에 대해 공부해 볼 건데요. 이번 글은 두 가지 서적을 참고해서 포스팅했습니다. ★ 구멍가게 코딩단의 코드로 배우는 스프링 웹 프로젝트 ★ ★ 흔한 개발자의 개발 노트를 운영하시는 흔한 개발자(?) 김인우 선생님의 스프링 부트 시작하기 ★ 1. AOP(Aspect Oriented Programming)란? AOP는 관점 지향 프로그래밍입니다. AOP는 자바와 같은 객체 지향 프로그래밍(OOP)을 더욱 OOP 답게 사용할 수 있도록 도와주는 역할을 합니다. AOP는 여러 개의 핵심.. 2023. 4. 10.
스프링 부트(Spring Boot) - 인터셉터(Interceptor) 적용하기 이전 글에서는 애플리케이션에 로그백(Logback)을 적용해서, 특정 기능이 실행되었을 때 IDE 콘솔에 SQL 쿼리 로그를 출력하는 방법을 알아보았습니다. 이번에는 스프링에서 제공해주는 기능 중 하나인 인터셉터(Interceptor)를 적용해 보도록 하겠습니다. 1. 인터셉터(Interceptor)란? 인터셉터는 이름 그대로 "무언가를 가로챈다."라는 의미를 가집니다. 인터셉터는 컨트롤러의 메서드(URI)에 접근하는 과정에서 무언가를 제어할 필요가 있을 때 사용됩니다. 정확히는 컨트롤러에 접근하기 전과 후로 나뉘는데요. 예를 들어 회원제 시스템과 같은 경우, 로그인 또는 계정의 권한과 관련된 로직을 인터셉터를 이용해서 더욱 효율적으로 처리할 수 있습니다. 2. HandlerInterceptor를 이용해.. 2023. 4. 10.