본문 바로가기
728x90

Spring18

[SpringMVC] Transaction 💡 트랜잭션 이란? 데이터를 처리하는데 오류나 다양한 상황에 대하여 안정성을 확보하고 성공한 경우에만 반영을 해주는 것을 트랜잭션이라고 합니다. 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미합니다. 즉, 병행 제어 시 처리되는 작업의 논리적 단위입니다. Transaction은 하나의 흐름으로 하나의 실행이 성공하거나 실패하면 모든 연산들을 동일하게 처리합니다 💡 트랜잭션의 성질 ▶ 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또는 모두 실패. ▶ 일관성(Consistency) 트랜잭션은 일관성 있는 데이타베이스 상태를 유지한다. (data integrity 만족 등.) ▶ 독립성(Isolation) 동시에 실행되는 트랜잭.. 2023. 8. 19.
[SpringMVC] Bean & POJO (Plain Old Java Object) 💡 스프링 빈이란? **스프링 컨테이너(IoC)에 의해 관리되는 자바 객체(POJO)**를 빈(Bean)이라고 합니다. 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 스프링 컨테이너에 적용된다. 💡 Component 컴포넌트 스캔은 @Component를 명시하여 빈을 추가하는 방법이다. 클래스 위에 @Component를 붙이면 스프링이 알아서 스프링 컨테이너에 빈을 등록한다. 컴포넌트 스캔의 대상 @Component 외에 @Controller, @Service, @Repository, @Configuration는 @Component의 상속을 받고 있으므로 모두 컴포넌트 스캔의 대상이다. @Controller 스프.. 2023. 8. 19.
[SpringMVC] DAO & DTO & VO 💡 1. DAO(Data Access Object) DAO는 실제로 DB의 data에 접근하기 위한 객체입니다. 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다. Service와 DB를 연결하는 고리 역할을 합니다. Repository package가 바로 DAO입니다. @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id).. 2023. 8. 19.
[SpringMVC] IoC (Inversion of Control) 💡 IoC란? IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다. 스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다. 이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다. 💡 Bean과 스프링 IoC 컨테이너 스프링 IoC 컨테이너가 관리하는 객체들을 Bean 이라고 부릅니다. 스프링은 이러한 Bean들의 의존성을 관리하고, 객체를 만들어 주며, Bean으로 등록을 해 주고, 이렇게 만들어진 것들을 관리합니다. 개발자가 이 부분까지 신경쓰지 않아도, 프레임워크가 알아서 해 주는 것입.. 2023. 8. 19.
[SpringMVC] DI (Dependency Injection) 💡 의존성 주입(Dependency Injection) 이란? Spring 프레임워크는 3가지 핵심 프로그래밍 모델 (DI/IoC, PSA, AOP) 을 지원하며, 그 중 하나가 의존성 주입(Dependency Injection, DI) 이다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. public class Store { private Pencil pencil; } 그리고 두 객체 간의 관계(의존성)를 맺어주는 것을 의존성 주입이라고 하며 생성자 주입,.. 2023. 8. 19.
[SpringMVC] 데이터 변환 / 검증 💡 WebDataBinder 요청으로 넘어온 값들을 실제 객체에 binding하는 과정의 중간 역할 💡 1. 타입 변환 ex. sns=kakao&sns=daum&sns=insta는 String[]타입으로 저장되는데 binding된 파라미터가 String타입이면, “kakao, daum, insta”로 Spring이 자동 변환한다. 💡 2. 데이터 검증(Validation) 사용자 또는 서버의 요청(http request) 에서 잘못된 내용이 있는지 유효성 검사하는 단계 객체를 검증하기 위한 인터페이스. 객체 검증기(validator) 💡 BindingResult 타입 변환, 데이터 검증의 결과와 에러를 저장하여 에러가 발생하더라도 Controller에서 처리하도록 함. 매핑된 메서드의 파라미터 중, bi.. 2023. 8. 19.
[SpringMVC] 예외 처리 (Exception) 💡 예외처리 Controller레벨에서 처리 - @ExceptionHandler @RestController public class TestController { // 예외 핸들러 @ExceptionHandler(Exception.class) public String controllerExceptionHandler(Exception e) { return "/error/404"; } @GetMapping("hello1") public String hello1() { throw new TestException("hello1 에러 "); // 강제로 예외 발생 } } Global 레벨에서의 처리 - @ControllerAdvice @ControllerAdvice public class GlobalExcepti.. 2023. 8. 19.
[SpringMVC] Cookie & Session | 세션과 쿠키(Session, Cookie) 웹 서비스는 HTTP 프로토콜을 기반으로 사용자와 통신한다. HTTP 프로토콜은 클라이언트와 서버와의 관계를 유지하지 않는 특징인 Stateless 기반인 프로토콜이다. 이런 Stateless 상태를 해결하는 두 가지 방식이 있는데 세션(Session)과 쿠키(Cookie)다. 두 방식 모두 사용자와 서버의 연결 상태를 유지해주는 방법으로, 세션은 서버에서 연결 정보를 관리하는 반면 쿠키는 사용자에 측에서 연결 정보를 관리하는 데 차이가 있다. 쿠키(Cookie)란? 클라이언트를 식별할 때 사용. 클라이언트(브라우저) 로컬에 저장되는 이름과 값의 쌍으로 구성된 작은 정보 기본적으로 아스키 문자만 저장 가능하다. (한글은 URL인코딩 필요) 이외에도 도메인 정.. 2023. 8. 19.
[SpringMVC] redirect & forward 💡 forward Foward는 다음으로 이동 할 URL로 요청정보를 그대로 전달합니다. 그렇기 때문에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효합니다. (URL변경 X) 시스템에 변화가 생기지 않는 단순 조회 요청(글 목록 보기, 검색)의 경우 forward로 응답하는 것이 바람직합니다. 💡 redirect Redirect의 경우 최초 요청을 받은 URL1에서 클라이언트에게 redirect할 URL2를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 다시 요청을 보냅니다. (URL변경 O) 처음 보냈던 최초의 Request와 Response 객체는 유효하지 않고 새롭게 생성됩니다. 시스템에 변화가 생기는 요청(회원가입, 글쓰기 등)의 경우에는 redirection을 사용하는 .. 2023. 8. 19.
728x90