[TIL-260331] Spring Boot 기초: Spring Data JPA
·
Spring Boot
어제 상품을 판매하는 애플리케이션을 만들기로 하고, myShop이라는 새 프로젝트를 생성했다.Spring Boot Dev Tools, Spring Web, Thymeleaf, Lombok, Spring Data JPA, MySQL Driver, H2 Database 등의 Dependencies를 추가해 줬었고, 어제 Lombok에 대해서만 알아 보았다.오늘은 본격적으로 애플리케이션을 구성해 보았다.pom.xml 수정스프링 부트 버전을 2.7.1로 낮추어야 해서 pom.xml을 조금 수정해주었다. 4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.1 com.exampl..
[TIL-260330] Spring Boot 기초: 개요, 실습, Lombok
·
Spring Boot
Spring Boot란?복잡한 설정 없이 빠르게 실행 가능한 Spring 애플리케이션을 만들 수 있는 프레임워크이다. 기존 Spring의 문제점 Spring Boot의 해결 방식 XML 설정 파일이 많음자동 구성톰캣 등 WAS 설치 필요내장 톰캣 제공 (jar 실행)의존성 직접 추가 복잡Starter 의존성 제공실행까지 구조가 복잡main() 메서드 한 줄로 실행새로운 프로젝트 세팅에 오래 걸림Spring Initializr로 바로 시작 가능 Spring Boot의 특징XML 설정 없이 단순 자바 수준의 설정 방식 제공톰캣 같은 WAS 자체 내장내장 서버를 이용해 별도 설정 없이 실행 가능빌드 구성을 단순화하기 위한 Spring Boot Starter 의존성 제공 (필요한 기능만 골라 쓸 수 있음)JA..
[TIL-260326] DTO, VO, Entity, Domain 뭐가 다른걸까..???
·
개발 지식
오늘 JPA 개념 설명을 들으면서 Entity, DTO가 등장했고, 이전에 사용하던 VO와 Domain 개념과 섞이면서 헷갈리는 부분이 많았다.그래서 이번에 각 개념을 역할 중심으로 정리해보려 한다.0. 전체 흐름 먼저 이해하기일반적인 구조는 다음과 같다.Controller ↔ DTO ↔ Service ↔ Domain(Entity + VO) ↔ Repository ↔ DB 핵심은 다음과 같다.DTO: 외부(클라이언트)와 데이터를 주고받는 역할Domain(Entity + VO): 내부 비즈니스 로직 처리1. DTO (Data Transfer Object, 데이터 전송 객체)프레젠테이션 계층과 도메인(Entity) 계층 사이에서 데이터 전달 전용으로 사용하는 객체이다.즉 Controller ↔ Service..
[TIL-260325] 스프링 프레임워크 기초: Ajax Response, RESTful 컨트롤러, MyBatis
·
Spring
트랜잭션과 AOP, 파라미터 검증도 배웠지만 중요도가 낮다고 생각하여 포스팅하지 않기로 했다.Ajax Response우선 Ajax에 대해 간단히 리마인드 해보면, Ajax는 웹 페이지 전체를 새로고침하지 않고, 자바스크립트를 이용해 서버와 비동기적으로 데이터를 교환하여 화면의 일부분만 동적으로 업데이트하는 웹 개발 기술이다. 즉 사용자가 이벤트를 발생시키면, 페이지 전체를 다시 로드하는게 아니라 자바스크립트가 HttpReqest를 사용해 서버에 비동기 요청을 보내고, 서버가 요청을 처리하고 데이터를 응답해주면 그 데이터를 받아 화면 일부분만 변경하는 것이다.스프링에서 Ajax Reponse를 보내는 방법을 예를 통해서 알아보겠다. 회원가입 시 중복 이메일 체크를 하기 위해 Ajax Request를 전송한..
[TIL-260324] 스프링 프레임워크 기초: Session, Interceptor, 로그인/로그아웃 기능
·
Spring
SessionHTTP는 무연결, 무상태 특징이 있기 때문에 상태를 유지하기 위해서는 쿠키, 세션, 토큰 등의 방법이 필요하다. 그 중 하나인 세션은 데이터를 웹 서버 또는 DB에 저장함으로써 보안성이 뛰어나다. 스프링 컨트롤러는 필요한 객체들을 파라미터를 통해 직접 제공받을 수 있다. 따라서 HttpSession 객체가 필요할 경우 파라미터를 통해 주입 받으면 된다. (아래에 다른 방법도 있음)HttpSession 객체를 얻어온 후에 원하는 처리를 한다(setAttribute(), getAttribute() 등).// 예시@RequestMapping (value = "/member/login", method = RequestMethod.POST )public String doLoginMember(@Mod..
[TIL-260320] 스프링 프레임워크 기초: Spring WebMVC 실습, bean config 설정 분리
·
Spring
월요일에 TIL을 올린 이후 4일만에 TIl을 올리게 되었다.그동안 수업을 짼(?) 건 아니고, 내용이 너어어어무 어려워서 정리가 안돼서 글을 못 올렸었다.오늘까지 수업을 듣고 보니, 화수목에 배운 내용이 조금씩 정리가 되어서 오늘은 TIl을 올리게 되었다.Spring WebMVC 실습스프링 MVC 프로젝트 폴더 구조스프링 mvc 프로젝트를 만들면 기본으로 여러 라이브러리와 폴더들, 설정 파일들이 만들어진다.실습에 필요한 기본 설정, 여러 xml 파일들 수정, DB 설정, 스켈레톤 코드 복사 붙여넣기 등등은 따로 이야기하지 않고 넘어 가겠다. (중요하지 않은 내용이라 글이 쓸데없이 길어질 것 같아 생략)기본 설정이 완료된 폴더 구조를 보면 다음과 같다. 뭐... 엄청나다.이 모든 파일들의 내용을 다 이해..
[TIL-260316] 스프링 프레임워크 기초: Spring 개념과 개발 환경 구성
·
Spring
프레임워크프레임워크 개념비기능적 요구사항(성능, 보안, 확장성, 안정성 등)을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 잘 만들어진 구조의 라이브러리의 덩어리. 프레임워크는 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로 하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감하게 해 준다.예) 게시판 서비스를 만들 때파일 첨부 구현하는데 시간 많이 듦 -> 파일 첨부 기능은 프레임워크가 지원해 주고 개발자는 게시판 메인 기능에 집중. 즉 프레임워크는 비기능적인 요소들을 구현해야 하는 불합리함을 극복해 주어 개발자가 기능적인 요구사항에 집중할 수 있도록 해준다. 디자인 패턴과 마찬가지로 반복적으로 발견되는 문제를 해결하기 위한 특화된 해결책을 제공한다...
[TIL-260313] Servlet & JSP 입문: MVC 패턴 실습
·
Java
오늘은 따로 진도는 안 나갔고 어제 배운 모델 2 방식 실습을 했다.MVC 패턴을 적용하여 회원 정보 추가, 조회, 수정, 삭제 등의 간단한 CRUD 기능을 실습했다. 전체 구현 흐름전체 구현 흐름은 다음과 같다.브라우저에서 localhost:8080/mvcEx/member/…주소로 요청서블릿 MemberController가 요청을 받아 그 요청에 해당하는 모델을 선택하여 작업을 요청 -> 커맨드 패턴: 브라우저가 URL 패턴을 이용해 컨트롤러에게 수행 작업을 요청하는 방법컨트롤러는 getPathInfo() 메서드를 사용하여 URL 패턴에서 요청명을 받아와 각 요청에 맞는 작업을 수행각 요청에 따른 nextPage로 포워딩 컨트롤러의 작업을 좀 더 구체적으로 살펴보면, 우선 MemberController..
[TIL-260312] Servlet & JSP 입문: JSP 내장 객체, 액션 태그, 모델2
·
Java
내장 객체JSP가 서블릿으로 별환될 때 컨테이너가 자동으로 생성시키는 서블릿 멤버 변수.별도의 객체 생성 없이 각 내장 객체의 메서드를 사용할 수 있다.내장 객체타입설명requestjavax.servlet.http.HttpServletRequest클라이언트의 요청 정보를 저장responsejavax.servlet.http.HttpServletResponse응답정보 저장outjavax.servlet.jsp.JspWriterJSP 페이지에서 결과를 출력sessionjavax.servlet.http.HttpSession세션 정보 저장applicationjavax.servlet.ServletContext컨텍스트 정보를 저장pageContextjavax.servlet.jsp.PageContextJSP 페이지에 대..
[TIL-260311] Servlet & JSP 입문: 커넥션 풀, JSP 정의, JSP 스크립트
·
Java
커넥션 풀웹 애플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정하여, 필요할 때마다 미리 연결해 놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업하는 기술이다.즉 미리 데이터베이스와 연결시킨 상태를 계속해서 유지하는 기술이다. 톰캣 컨테이너는 자체적으로 커넥션 풀 기능을 제공한다.톰캣 실행 -> 미리 데이터베이스와 연결 -> Connection Pool 객체 생성 -> 애플리케이션이 데이터베이스와 연동할 일이 생기면 Connection Pool 객체의 메서드를 호출해 빠르게 연동하여 작업 JNDI필요한 자원을 키/값(key/value) 쌍으로 저장한 후 필요할 때 키를 이용해 값을 얻는 방법.톰캣이 만든 Connection Pool 객체에 접근할 때 JNDI를 이용한다. 커넥션 ..