MVC 패턴에 대한 이해와 MVC1, MVC2 차이점 알아보기애플리케이션을 Model-View-Controller로 역할을 나누어 개발하는 방식View에 표현할 데이터View에 표현할 데이터를 획득하는 작업 Model이 제공하는 데이터 표현Model이 제공하는 데이터
# 목적 Model2의 주요 API 간단 정리 주요 API 1. 요청핸들러 메소드 클라이언트의 HTTP 요청을 처리하는 메소드 1) 추가/수정/삭제 작업 요청파라미터 값을 조회한다. 조회된 요청파라미터값을 객체를 생성해서 담는다. 값이 담긴 객
# 목적 Spring Framework에 대한 이해 ❓ Spring framework 란? 서버용 자바 애플리케이션 개발을 지원하는 프레임워크 Spring 생태계의 핵심 (보통 Spring 이라고 하면 Spring Framework를 의미함) POJO(Plain Ol
# 목적 IoC(제어역전, Inversion of Control)에 대한 이해 ❓ IoC(제어역전) 이란? 자신이 사용할 객체에 대한 결정권이 자신에게 있지 않고, 외부(제 3자) 모듈에게 결정권을 위임한 것 자신이 사용할 객체를 직접 생성하지 않는다. 자신이
# 목적 Spring Container(스프링 컨테이너)에 대해 이해하고, Spring Container를 활용하기 이전에 Container를 통한 의존성 주입 코드를 작성해보기 ❓ Spring Container Container(컨테이너) 란? 객체의 라이프사이클을
# 목적 Maven 빌드 도구에 대한 이해 빌드 도구(Build Tool) 란? 프로젝트 생성, 컴파일, 테스트, 패키징, 배포 등의 작업을 위한 전용 프로그램 💡 Maven 자바용 프로젝트 관리 도구 프로젝트의 전체 라이프 사이클을 관리하는 도구 프로젝트의 생성, 컴파일, 빌드, 패키징, 배포 등의 작업을 수행할 수 있다. 프로젝트 구조 및 빌드 단...
📌 애플리케이션의 확장성을 높이는 방법 자신이 사용할 객체를 자신이 결정(생성)하지 않는다. 인터페이스를 이용한 느슨한 결합을 유도한다. 의존성 주입을 통해서 외부 모듈(제3자)로부터 자신이 사용할 객체를 주입받는다. 클래스가 클래스를 의존하는 경우 : 결합이 높
다양한 방식의 데이터베이스 연결을 제공하고, 이에 대한 추상화 계층을 제공함으로써 업무로직과 데이터베이스 연결방식 간의 종속성을 배제한다.2\.
# 목적 JdbcTemplate의 RowMapper를 익명객체 혹은 람다식으로 구현하는 방법에 대한 이해 1. 익명객체로 작성 익명객체로만 람다식 없이 작성 🔎 코드) 2. 람다식으로 작성 > ❓ 람다식 : 인터페이스의 구현부(매개변수와 구현코드)를 작성. *
# 목적 Spring Boot에 대한 이해 ❓ Spring Boot 란? Spring 프로젝트를 기반으로 하는 파생 프로젝트 Spring을 기반으로 하는 애플리케이션을 보다 쉽게 개발할 수 있도록 지원하는 프로젝트 개발자가 프로젝트와 관련된 설정을 일일이 하지 않
# 목적 @SpringBootApplication 어노테이션에 대한 이해 ❓ @SpringBootApplication 스프링부트 애플리케이션의 부트스트랩핑 클래스에 추가되는 어노테이션 해당 프로젝트(어플리케이션)가 스프링 부트 애플리케이션임을 나타내는 어노테이션 🔎 @SpringBootApplication 구성 1. @SpringBootConfigur...
# 목적 : Lombok의 주요 어노테이션과 Builder 패턴에 대한 이해 ❓ Lombok 자바빈즈(JavaBeans, 값을 저장하는 객체)에 Getter/Setter, 생성자, toString, equals/hashcode 등의 메서드를 자동으로 생성시킨다. 롬
스프링 부트 버전 : 2.7.18패키징 타입 : war의존성spring webvalidationoraclemybatisspring devtoolslombok스프링 부트 버전 변경하기3.2x ---> 2.7.18자바버전 변경하기17 ---> 11mybatis 버전 변경하
# 목적 Spring의 @Controller, @RequestMapping, @GetMapping 어노테이션과 요청핸들러 메서드에 대한 이해 @Controller 컨트롤러 클래스임을 나타내는 어노테이션 @Component 어노테이션의 하위 어노테이션 이 어노테이션이
SpringShopApplication.java의 메인 메서드가 실행된다.SpringShopApplication.run() 메서드가 실행되어 스프링 컨테이너를 생성한다.SpringShopApplication.java가 위치한 패키지를 com.sample 패키지 및 그
# 목적 Spring MVC의 주요 컴포넌트인 DispatcherServlet, HandlerMapping, HandlerAdapter, View, ViewResolver와 그에 대한 연관관계에 대해 알아보기 Spring MVC의 주요 컴포넌트 1. Dispatche
mybatis의 동적 쿼리 정리mybatis는 <if>, <choose> ~ <when> ~ <otherwise>, <where>, <set>, <foreach> 태그를 사용해서 동적 SQL을 작성할 수 있다.mybatis에서 동적
# 목적 mybatis 쿼리 캐싱에 대해 알아보기 ❓ mybatis 쿼리 캐싱 거의 변경되지 않거나 고정된 값을 ex) 상품 카테고리 데이터베이스에서 자주 조회하는 경우, mybatis의 쿼리 캐싱 기능을 사용하면 데이터베이스 액세스 부하를 줄일 수 있다. 다수의 사
* 모든 코드의 import 표기는 생략함 a. 부서 목록 페이지 요청하기 0. DeptController.java localhost/dept/list를 요청했을 때 부서 목록 페이지가 표시되도록 컨트롤러/요청핸들러 메서드 정의 b. 부서 목록 정보 표시하기 > -
1. list.jsp /WEB-INF/views/dept/list.jsp에 신규 부서 등록폼 페이지를 요청하는 `` 링크 추가 2. Controller.java GET 방식의 http://localhost/dept/create 요청에 매핑되는 요청핸들러 메서드 정의하
📍 YAML 이란? 데이터 직렬화 언어 설정파일(구성파일) 작성에 자주 사용 쉽게 읽고 이해할 수 있도록 설계됨 데이터 직렬화 란? 객체를 네트워크 통신에 사용하기 적합한 형식으로 변환하는 것. 읽고 작성하기 쉬운 텍스트 형식과 컴퓨터가 쉽게 처리할 수 있는 이진형
📍 @어노테이션 자바 소스 코드에 메타정보를 표현하기 위해서 사용된다. 메타정보 소스코드에 추가해서 사용할 수 있는 부가정보 컴파일 과정, 애플리케이션 실행과정에서 코드를 어떻게 처리해야 하는지를 알려주기 위한 추가정보 @어노테이션의 형식 1. @Target 메
📍 애플리케이션 로깅(Logging) 로깅 : 애플리케이션 실행 정보를 제공하는 일련의 기록인 로그(log)를 생성시키는 것 사용 목적 애플리케이션 실행 중 문제가 발생했을 때, 문제의 원인을 파악하기 위한 정보를 제공한다. 사용 이점 로그는 애플리케이션 실행과 관련된 유용한 정보를 제공할 수 있다. 실행날짜와 시간, 로그레벨, 스레드명, 패키...
❓ 폼 입력값 유효성 체크 서버 사이드에서 폼 입력값에 대한 유효성을 체크하는 것 Spring MVC는 폼 입력값에 대한 유효성 체크를 지원하는 API를 제공한다. 라이브러리 의존성 📌 Spring의 폼 입력값 유효성 체크 API 1. @Valid jakarta.
스프링이 요청핸들러 메소드의 매개변수를 조사한다.스프링이 Model객체를 생성한다.스프링이 Model객체를 요청핸들러 메소드의 매개변수로 전달한다.개발자가 UserRegisterForm객체를 생성해서 Model객체에 담는다.form.jsp로 내부이동 시키는 문자열을 반
# 목적 Spring에서 의존성 주입받는 방법 정리 1. @Autowired 2. @RequiredArgsConstructor 위처럼 정의 시, RequiredArgsConstructor가 final로 정의된 멤버변수를 아래처럼 생성자로 만들어줌 final은 반드시 값이 들어있어야 하는데, 직접적인 변경이 불가함 변경하기 위해서는 생성자 메...
📍 Spring Security 웹 애플리케이션에 대한 인증/인가 보안을 담당하는 프레임워크 * 인증 : 누구? * 인가 : 권한에 따라 접근 가능/불가 - 인증(Authentication) 사용자의 신원을 확인하는 과정 해당 사용자가 본인이 맞는지 확인하는 과정
📍 Security Filter Chain Spring Security에서 제공하는 인증, 인가를 위한 필터들을 관리하는 객체 기본적으로 제공하는 필터들이 있으며, 개발자는 애플리케이션의 개발 목적에 맞게 사용자 정의 필터를 추가하거나 SecurityFilterCha
📌 `` 태그 > \* 해당 내용은 Oracle 기준이며, 데이터베이스마다 약간의 차이가 있음 `` 태그 내부에 정의하는 태그 INSERT 구문 실행 전, 실행 후 실행할 SQL문을 지정할 수 있다. `` 태그에서 실행하는 SQL 구문은 새로 발행되는 기본키값을 획
Advice : 클래스에 Advice가 붙어있으면 일반적으로 공통기능 @ControllerAdvice 여러 컨트롤러 클래스에서 공통으로 사용되는 기능이 정의된 클래스에 부착하는 어노테이션 1. Target 핵심기능이 구현된 객체 공통 기능 적용대상이 되는 객체 2
❓ @SessionAttributes > 여러 단계에 걸쳐서 입력된 데이터를 HttpSession에 옮겨담아 데이터가 유지되도록 해주는 어노테이션 Model 객체에 저장되는 데이터를 HttpSession에 저장시키는 어노테이션 컨트롤러 클래스에 @SessionAtt
DB Transaction 여러번의 DB Access 작업을 하나의 논리적인 작업 그룹으로 만들고, 그 그룹을 DB에 일괄적으로 전체반영/전체취소 되도록 만들어주는 단위 부분적인 성공/취소를 허용하지 않음 @Transactional > 선언적 트랜잭션 처리를 지원하는
❓ @ResponseBody > 요청핸들러 메소드에 부착 시, 뷰페이지(jsp)로 이동하지 않고 데이터만 반환되도록 해주는 어노테이션 요청핸들러 메소드나 요청핸들러 메소드의 반환타입 앞에 @ResponseBody가 지정되어 있으면, 요청핸들러 메소드가 반환하는 값은
❓ `` join 매핑 등 복잡한 구문을 간단하게 서술할 수 있도록 만들어주는 태그 컬럼이름과 값을 저장하는 객체의 프로퍼티명(멤버변수명)을 매핑시킨다. ✔️ 주요 속성 1. type 조회결과를 저장할 클래스의 전체 이름 2. id 식별자를 지정한다. ✔️ 주요
- 웹에서 화면전환(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다. 비동기 통신을 하기 위해서는 클라이언트에서 서버로 요청 메시지를 보낼 때 본문(Body)에 데이터를 담아서 보내야 하고, 서버에서 클라이언트로 응답을 보낼 때 본문(B
❓ Thymeleaf 뷰 템플릿 엔진 템플릿 엔진이란? : 지정된 템플릿 양식과 모델의 데이터를 합쳐서 동적 HTML 문서를 출력하는 라이브러리 템플릿 엔진의 종류 : JSP, FreeMarker, Thymeleaf 서버 사이드 HTML 렌더링(SSR,
❓ JPA(Java Persistence API) > - 자바의 표준 데이터베이스 액세스 API ORM(Object-Relational Mapping, 객체-관계 매핑)을 이용한 데이터베이스 액세스 API JPA의 대표적인 구현체 : Hibernate(하이버네이트) 프
❓ 단위테스트 개발자 레벨의 테스트 주로 그 기능을 수행한 개발자가 테스트 ✔️ 단위테스트의 목적 기능 하나를 테스트하는 것 예상한 값과 일치하는 값이 나오는지 테스트 Service, Controller가 테스트 대상. Repository는 테스트할 필요 없음 ✔️ 장점 반복적인 테스트 실행 가능 @Transactional 어노테이션을 부착하면 ...
❓ Optional > - Java8에 새로 추가된 API 프로그램 실행과정에서 발생하는 NullPointerException을 피하기 위한 API null이 올 수 있는 값을 감싸는 Wrapper 클래스 프로그램의 실행결과로 Optional를 반환하면 언제나 nul
📌 @ManyToOne > N:1(다대일) 연관관계를 표현하는 어노테이션 @ManyToOne 어노테이션이 붙어있는 엔티티가 N이고, 반대 엔티티가 1이다. 가장 많이 사용되는 연관관계 표현 어노테이션 예시) Post 엔티티가 N이고, User 엔티티가 1
📌 application.properties 설정 1. spring.jpa.hibernate.ddl-auto=update SQL의 DDL 기능 - update: 변경분만 반영 (개발환경에서만 사용할 것) 만약 테이블을 Developer에서 SQL로 따로 생성해두고, JPA를 사용하고 싶다면 해당 설정을 추가하지 않으면 된다. 2. spring.jpa....
💡 사용예시 1. Controller 화면으로 이동할 때는 기본적으로 Model이 있음 2. html `` 사용 데이터를 표현할 때 표현되는 방식을 조작하고 싶을 때는 # 사용 Thymeleaf 표현식 유틸리티 객체를 사용하는 것 타임리프에서의 요청파라미터
📌 Spring Data JPA의 페이징 처리 ✔️ 주요 객체 1. Page 2. Pageable
`` 태그에서 th:action="URL경로"를 지정하지 않은 경우 ``의 th:action 속성값은 주소창의 URL 경로가 된다. 💡 예시 1. html 2. Controller 1) 새 게시글 등록 등록화면 요청 : GET방식, /post/create
💡 연관관계의 주인 외래키를 만들어서 값을 갖고 있는 테이블이 주인 1. 단방향 연관관계 실제로 연관관계의 주인인 테이블에만 연관관계를 설정(@ManyToOne) 2. 양방향 연관관계 매핑 두 객체가 서로 참조해야 하는 상황에서 정의하는 연관관계 매핑 방식 데이
\* By의 B는 반드시 대문자로 작성find...By... 형식으로 작성count...By... 형식으로 작성반환타입 : Long 값exists...By... 형식으로 작성반환타입 : boolean 값delete...By... 형식으로 작성findFirst...By.
지연로딩(FetchType.LAZY) > - 실제 객체를 사용하는 시점에 데이터를 조회한다. 예시) Member를 조회하면 id와 name에는 MEMBER 테이블을 조회해서 획득한 데이터가 저장되어 있다. team에는 프록시객체가 대입되어 있다. (Team객체가 대
Spring 애플리케이션의 open-in-view 설정 > spring.jpa.openinview 설정 : 커넥션을 언제 반납할지를 결정하는 설정 spring.jpa.openinview=true : 응답이 완료될 때 커넥션 반납 spring.jpa.openinview=false : 서비스의 메소드가 종료될 때 커넥션 반납 기본값 : true 기본값이 t...
REST : Representation State Transfer의 약자자원을 이름(자원에 대한 표현)으로 구분하여 해당 자원의 상태(자원의 정보)를 주고 받는 방식의 소프트웨어 아키텍처\* Representation : 자원의 표현, 요청 URI로 표현\* State
❓ 스프링 배치란 > 스프링 배치(Spring Batch)는 대용량 데이터를 처리하기 위한 프레임워크로, 스프링 프레임워크 기반에서 작동한다. 일반적으로 배치 작업은 대량의 데이터를 처리하거나, 주기적이고 반복적인 작업을 실행하는 데 사용되며, 스프링 배치는 이러한 작