ETC./Spring(14)
-
ETC./Spring
2025.11.19
1
[Spring] 스프링 JPA란 무엇인가? - 동작 원리와 처리 흐름 정리
스프링에서 DB 연동을 할 때 MyBatis와 함께 가장 많이 사용되는 기술이 바로 JPA(Java Persistence API)입니다. JPA는 SQL을 직접 작성하기보다, 엔티티(Entity)와 매핑 정보만 정의해두면 나머지 CRUD SQL을 자동으로 생성하고 실행해 주는 방식의 표준 ORM 기술입니다. 이번 글에서는 Spring과 JPA가 함께 동작하는 방식과 전체 처리 흐름을 정리해보려고 합니다. JPA란 무엇인가?JPA는 자바 진영에서 정의한 ORM(Object-Relational Mapping) 표준 스펙입니다. 실제 구현체로는 Hibernate, EclipseLink 등이 있고, 스프링 부트에서는 보통 Hibernate JPA를 기본 구현체로 사용합니다.개발자는 엔티티 클래스 + 매핑 어노테..
-
ETC./Spring
2025.11.18
[Spring] 스프링 MyBatis란 무엇인가? - 동작 원리와 처리 흐름 정리
스프링에서 DB 연동을 할 때 JPA와 함께 가장 많이 사용되는 기술이 바로 MyBatis(마이바티스)입니다. 실무에서는 JPA보다 훨씬 높은 비중으로 MyBatis를 사용하고 있어요. 특히 MyBatis는 SQL을 직접 작성할 수 있기 때문에 복잡한 쿼리를 다루거나 SQL 튜닝이 중요한 프로젝트에서 많이 사용됩니다. 이번 글에서는 Spring과 MyBatis가 함께 동작하는 방식과 전체 처리 흐름을 정리해보려고 합니다. MyBatis란 무엇인가?MyBatis는 개발자가 직접 SQL을 작성하고, 해당 SQL 결과를 자바 객체로 매핑해주는 Persistence Framework입니다. JPA처럼 자동으로 SQL을 생성해주는 ORM 방식이 아니라, 원하는 SQL을 직접 작성해서 그대로 실행하는 방식이기 때문..
-
ETC./Spring
2025.11.17
[Spring] 스프링 프레임워크 MVC 처리 프로세스 - DispatcherServlet
스프링 웹 애플리케이션을 개발하다 보면 컨트롤러만 만들고 어노테이션만 붙이다 보면 “요청이 들어와서 응답이 나갈 때까지, 스프링 내부에서는 어떤 일이 일어날까?”가 궁금해지죠. 이번 글에서는 Spring MVC의 전체 요청 처리 프로세스를 한 번 정리해보려고 합니다. Spring MVC란 무엇인가?Spring MVC는 이름 그대로 Model, View, Controller 구조로 웹 애플리케이션을 구성하는 웹 프레임워크입니다. 클라이언트의 HTTP 요청을 받아서 컨트롤러로 전달하고, 비즈니스 로직을 수행한 뒤 View(화면)를 렌더링해서 응답을 돌려주는 일을 담당합니다. 우리가 주로 작성하는 것은 @Controller, @RestController 같은 컨트롤러 코드이지만, 그 뒤에서는 Dispatche..
-
ETC./Spring
2025.11.16
2
[Spring] 스프링 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
스프링을 처음 공부하다 보면 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이라는 내용이 나오는데요. 관점 지향 프로그래밍이니 Aspect Oriented Programming 이라는 어려운 용어를 들으면 어렵게 느껴지지만, 결국에는 흩어져 있는 공통 관심사를 한 곳에 모아서 관리하는 기법이라고 이해하시면 훨씬 편합니다. 이번 글에서는 스프링에서 AOP가 왜 필요하고, 어떻게 동작하는지 한 번 정리해보려고 합니다. AOP란 무엇인가?전통적인 객체지향 프로그래밍(OOP)에서는 보통 도메인 별로 클래스를 나누고, 각 클래스 안에 해당 도메인의 책임을 모아둡니다. 하지만 실제 서비스를 만들다 보면 다음과 같은 코드가 여러 레이어에 반복되는 경우가 많습니다.요청/응답 로그 남기..
-
ETC./Spring
2025.11.15
[Spring] 스프링 IoC(제어의 역전), DI(의존성 주입) 완벽 이해하기
스프링을 처음 접하면 만나게 개념이 바로 DI(Dependency Injection, 의존성 주입)와 IoC(Inversion of Control, 제어의 역전)입니다. 이 제어의 역전(IoC)과 의존성 주입(DI)은 객체지향 프로그래밍에서 코드의 유연성과 유지보수성을 높이는 데 중요한 설계 패턴으로 한번 구조를 정확히 이해하면 유지보수와 확장성 면에서 큰 장점을 얻을 수 있습니다. 오늘은 Spring DI와 IoC를 쉽게 정리해보려고 합니다. IoC(Inversion of Control)란 무엇인가?전통적인 자바 애플리케이션에서는 객체가 스스로 의존하는 객체를 만들고 제어했습니다. 예를 들어 서비스가 레포지토리를 직접 생성하는 방식이죠.public class MemberService { priva..
-
ETC./Spring
2021.01.05
[Spring] 스프링 부트 게시판 만들기-4 계층형 댓글 만들기
실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt")..
-
ETC./Spring
2021.01.04
[Spring] 스프링 부트 게시판 만들기-3 글 상세보기 페이지 만들기
실행 화면 (글 상세보기) 소스코드 글 상세보기 (view.jsp) 과제 홈 게시판 본문 이미지와 제목, 글 내용이 적절하게 보여질 수 있도록 컨트롤을 적절히 배치하고 boardView URL로 Controller에 요청을 보내 image와 title, contents에 조회한 내용들을 삽입하여 보여줍니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardService s; @RequestMapping(value="/view", method=RequestMethod.GET) public String view() { return "view"; } @RequestMapping(value..
-
ETC./Spring
2021.01.03
[Spring] 스프링 부트 게시판 만들기-2 게시판 글 등록 (이미지 첨부)
실행 화면 (글 등록) 소스 코드 글 등록 화면 (write.jsp) 과제 홈 게시판 글쓰기 제목: 내용: 글쓰기 화면은 위와 같이 제목, 내용, 그리고 이미지 첨부를 할 수 있게끔 만들었습니다. 해당 화면에서 글을 작성하고 글쓰기 버튼을 누르면 writeAction이라는 url로 controller에 요청이 가게 됩니다. 파일 첨부 기능 구현 시 form의 메서드를 post / enctype을 multipart/form-data로, input type="file"로 해주고 컨트롤러에서는 MultipartFile 받아주면 됩니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardSe..
-
ETC./Spring
2021.01.02
9
[Spring] 스프링 부트 게시판 만들기-1 게시판 리스트 출력
SpringBoot를 활용하여 간단한 게시판을 만들어야 할 일이 있어 급하게 만든 초간단 게시판을 공유합니다. 총 4개의 포스팅으로 작성할 예정이며 전체 소스는 마지막 게시글에서 GitHub링크를 남겨드리도록 하겠습니다. 최소한의 게시판이 돌아가게끔 기본적인 틀만 정해서 구현하였기에 이 게시판을 기초로 살을 붙여나가며 사용하시면 좋을 듯합니다. SpringBoot와 데이터베이스는 MySql을 사용하였고 SpringBoot에서 데이터 베이스 접근은 마이바티스 라이브러리를 사용해 접근했습니다. 주요 기능 1. 게시판 리스트 출력 2. 게시판 글 등록 (이미지 첨부) 3. 게시판 상세보기 4. 댓글과 대댓글 (계층형 댓글) 실행 화면 (게시판 리스트 출력) 테이블 생성 CREATE TABLE `tb_board..
-
ETC./Spring
2020.11.22
2
[Spring] Spring Tools 4 (Spring Boot) 설치 및 환경설정 방법
스프링 부트(Spring Boot)란? 스프링 부트는 스프링 설정에서 반복되는 코드를 싹 빼고 간편하게 이용할 수 있도록 확장된 버전입니다 스프링은 스프링부트와 비교하여 여러가지 장점이 있습니다. 개발을 하며 가장 와닿는 장점은 설정이 매우 간편해졌다는 점입니다. 스프링의 경우 많은 XML설정 파일등을 작성하는 등 설정하기도 힘들고 웹을 구축하기 위해 많은 Dependency 설정을 추가해주는 등 설정을 위한 코드의 양도 굉장히 많았지만 스프링부트에서는 starter 라이브러리 사용으로 많이 간소화 되었습니다. 이렇게 스프링 부트는 반복되는 개발환경 구축을 위한 코드작성등의 노력을 줄여주고 쉽고 빠르게 프로젝트를 설정할 수 있도록 도와줍니다. 또한 Maven보다 강력한 Gradle이라는 빌드배포 툴을 제..
-
ETC./Spring 2025.11.19 1[Spring] 스프링 JPA란 무엇인가? - 동작 원리와 처리 흐름 정리 스프링에서 DB 연동을 할 때 MyBatis와 함께 가장 많이 사용되는 기술이 바로 JPA(Java Persistence API)입니다. JPA는 SQL을 직접 작성하기보다, 엔티티(Entity)와 매핑 정보만 정의해두면 나머지 CRUD SQL을 자동으로 생성하고 실행해 주는 방식의 표준 ORM 기술입니다. 이번 글에서는 Spring과 JPA가 함께 동작하는 방식과 전체 처리 흐름을 정리해보려고 합니다. JPA란 무엇인가?JPA는 자바 진영에서 정의한 ORM(Object-Relational Mapping) 표준 스펙입니다. 실제 구현체로는 Hibernate, EclipseLink 등이 있고, 스프링 부트에서는 보통 Hibernate JPA를 기본 구현체로 사용합니다.개발자는 엔티티 클래스 + 매핑 어노테.. -
ETC./Spring 2025.11.18[Spring] 스프링 MyBatis란 무엇인가? - 동작 원리와 처리 흐름 정리 스프링에서 DB 연동을 할 때 JPA와 함께 가장 많이 사용되는 기술이 바로 MyBatis(마이바티스)입니다. 실무에서는 JPA보다 훨씬 높은 비중으로 MyBatis를 사용하고 있어요. 특히 MyBatis는 SQL을 직접 작성할 수 있기 때문에 복잡한 쿼리를 다루거나 SQL 튜닝이 중요한 프로젝트에서 많이 사용됩니다. 이번 글에서는 Spring과 MyBatis가 함께 동작하는 방식과 전체 처리 흐름을 정리해보려고 합니다. MyBatis란 무엇인가?MyBatis는 개발자가 직접 SQL을 작성하고, 해당 SQL 결과를 자바 객체로 매핑해주는 Persistence Framework입니다. JPA처럼 자동으로 SQL을 생성해주는 ORM 방식이 아니라, 원하는 SQL을 직접 작성해서 그대로 실행하는 방식이기 때문.. -
ETC./Spring 2025.11.17[Spring] 스프링 프레임워크 MVC 처리 프로세스 - DispatcherServlet 스프링 웹 애플리케이션을 개발하다 보면 컨트롤러만 만들고 어노테이션만 붙이다 보면 “요청이 들어와서 응답이 나갈 때까지, 스프링 내부에서는 어떤 일이 일어날까?”가 궁금해지죠. 이번 글에서는 Spring MVC의 전체 요청 처리 프로세스를 한 번 정리해보려고 합니다. Spring MVC란 무엇인가?Spring MVC는 이름 그대로 Model, View, Controller 구조로 웹 애플리케이션을 구성하는 웹 프레임워크입니다. 클라이언트의 HTTP 요청을 받아서 컨트롤러로 전달하고, 비즈니스 로직을 수행한 뒤 View(화면)를 렌더링해서 응답을 돌려주는 일을 담당합니다. 우리가 주로 작성하는 것은 @Controller, @RestController 같은 컨트롤러 코드이지만, 그 뒤에서는 Dispatche.. -
ETC./Spring 2025.11.16 2[Spring] 스프링 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍) 스프링을 처음 공부하다 보면 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)이라는 내용이 나오는데요. 관점 지향 프로그래밍이니 Aspect Oriented Programming 이라는 어려운 용어를 들으면 어렵게 느껴지지만, 결국에는 흩어져 있는 공통 관심사를 한 곳에 모아서 관리하는 기법이라고 이해하시면 훨씬 편합니다. 이번 글에서는 스프링에서 AOP가 왜 필요하고, 어떻게 동작하는지 한 번 정리해보려고 합니다. AOP란 무엇인가?전통적인 객체지향 프로그래밍(OOP)에서는 보통 도메인 별로 클래스를 나누고, 각 클래스 안에 해당 도메인의 책임을 모아둡니다. 하지만 실제 서비스를 만들다 보면 다음과 같은 코드가 여러 레이어에 반복되는 경우가 많습니다.요청/응답 로그 남기.. -
ETC./Spring 2025.11.15[Spring] 스프링 IoC(제어의 역전), DI(의존성 주입) 완벽 이해하기 스프링을 처음 접하면 만나게 개념이 바로 DI(Dependency Injection, 의존성 주입)와 IoC(Inversion of Control, 제어의 역전)입니다. 이 제어의 역전(IoC)과 의존성 주입(DI)은 객체지향 프로그래밍에서 코드의 유연성과 유지보수성을 높이는 데 중요한 설계 패턴으로 한번 구조를 정확히 이해하면 유지보수와 확장성 면에서 큰 장점을 얻을 수 있습니다. 오늘은 Spring DI와 IoC를 쉽게 정리해보려고 합니다. IoC(Inversion of Control)란 무엇인가?전통적인 자바 애플리케이션에서는 객체가 스스로 의존하는 객체를 만들고 제어했습니다. 예를 들어 서비스가 레포지토리를 직접 생성하는 방식이죠.public class MemberService { priva.. -
ETC./Spring 2021.01.05[Spring] 스프링 부트 게시판 만들기-4 계층형 댓글 만들기 실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt").. -
ETC./Spring 2021.01.04[Spring] 스프링 부트 게시판 만들기-3 글 상세보기 페이지 만들기 실행 화면 (글 상세보기) 소스코드 글 상세보기 (view.jsp) 과제 홈 게시판 본문 이미지와 제목, 글 내용이 적절하게 보여질 수 있도록 컨트롤을 적절히 배치하고 boardView URL로 Controller에 요청을 보내 image와 title, contents에 조회한 내용들을 삽입하여 보여줍니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardService s; @RequestMapping(value="/view", method=RequestMethod.GET) public String view() { return "view"; } @RequestMapping(value.. -
ETC./Spring 2021.01.03[Spring] 스프링 부트 게시판 만들기-2 게시판 글 등록 (이미지 첨부) 실행 화면 (글 등록) 소스 코드 글 등록 화면 (write.jsp) 과제 홈 게시판 글쓰기 제목: 내용: 글쓰기 화면은 위와 같이 제목, 내용, 그리고 이미지 첨부를 할 수 있게끔 만들었습니다. 해당 화면에서 글을 작성하고 글쓰기 버튼을 누르면 writeAction이라는 url로 controller에 요청이 가게 됩니다. 파일 첨부 기능 구현 시 form의 메서드를 post / enctype을 multipart/form-data로, input type="file"로 해주고 컨트롤러에서는 MultipartFile 받아주면 됩니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardSe.. -
ETC./Spring 2021.01.02 9[Spring] 스프링 부트 게시판 만들기-1 게시판 리스트 출력 SpringBoot를 활용하여 간단한 게시판을 만들어야 할 일이 있어 급하게 만든 초간단 게시판을 공유합니다. 총 4개의 포스팅으로 작성할 예정이며 전체 소스는 마지막 게시글에서 GitHub링크를 남겨드리도록 하겠습니다. 최소한의 게시판이 돌아가게끔 기본적인 틀만 정해서 구현하였기에 이 게시판을 기초로 살을 붙여나가며 사용하시면 좋을 듯합니다. SpringBoot와 데이터베이스는 MySql을 사용하였고 SpringBoot에서 데이터 베이스 접근은 마이바티스 라이브러리를 사용해 접근했습니다. 주요 기능 1. 게시판 리스트 출력 2. 게시판 글 등록 (이미지 첨부) 3. 게시판 상세보기 4. 댓글과 대댓글 (계층형 댓글) 실행 화면 (게시판 리스트 출력) 테이블 생성 CREATE TABLE `tb_board.. -
ETC./Spring 2020.11.22 2[Spring] Spring Tools 4 (Spring Boot) 설치 및 환경설정 방법 스프링 부트(Spring Boot)란? 스프링 부트는 스프링 설정에서 반복되는 코드를 싹 빼고 간편하게 이용할 수 있도록 확장된 버전입니다 스프링은 스프링부트와 비교하여 여러가지 장점이 있습니다. 개발을 하며 가장 와닿는 장점은 설정이 매우 간편해졌다는 점입니다. 스프링의 경우 많은 XML설정 파일등을 작성하는 등 설정하기도 힘들고 웹을 구축하기 위해 많은 Dependency 설정을 추가해주는 등 설정을 위한 코드의 양도 굉장히 많았지만 스프링부트에서는 starter 라이브러리 사용으로 많이 간소화 되었습니다. 이렇게 스프링 부트는 반복되는 개발환경 구축을 위한 코드작성등의 노력을 줄여주고 쉽고 빠르게 프로젝트를 설정할 수 있도록 도와줍니다. 또한 Maven보다 강력한 Gradle이라는 빌드배포 툴을 제..