분류 전체보기 36

스프링 DB 2편 - 11장. 스프링 트랜잭션 전파2 - 활용

트랜잭션 전파 활용1 - 예제 프로젝트 시작 비즈니스 요구사항 - 회원 등록 및 조회, - 변경 이력 추적위해 변경 이력을 DB LOG 테이블에 남기기 멤버 엔티티, 회원 리포지토리, 로그 엔티티, 로그 리포지토리, 멤버 서비스 등을 만들며 JPA를 사용한다. JPA의 구현체인 하이버네이트가 테이블을 자동으로 생성. 메모리 DB이기 때문에 모든 테스트가 완료된 이후에 DB는 사라진다. JPA를 통한 모든 데이터 변경에는 트랜잭션이 필요하다. 현재 코드에서는 서비스 계층에 트랜잭션이 없기 때문에 리포지토리에 트랜잭션이 있다. 트랜잭션 전파 활용2 - 커밋, 롤백 서비스 계층에 트랜잭션이 없을 때 - 커밋 서비스 계층에 트랜잭션이 없고 회원, 로그 리포지토리가 각각 트랜잭션을 가지고 있으며 이때 회원, 로그..

Spring/DB 2022.10.10

스프링 DB 2편 - 10장. 스프링 트랜잭션 전파1 - 기본

스프링 트랜잭션 전파1 - 커밋, 롤백 트랜잭션이 둘 이상 있을 때 어떻게 동작하는지 알아보고, 스프링이 제공하는 트랜잭션 전파라는 개념도 알아보자. 커밋, 롤백은 앞서 배운 내용과 비슷하다. 스프링 트랜잭션 전파2 - 트랜잭션 두 번 사용 트랜잭션이 각각 따로 사용되는 경우를 확인해보자. 트랜잭션 1이 완전히 끝나고나서 트랜잭션 2를 수행하는 예제에서 로그를 보면 트랜잭션1과 트랜잭션2가 같은 conn0 커넥션을 사용한다. 트랜잭션1은 conn0 커넥션을 모두 사용하고 커넥션풀에 반납까지 완료한 후에, 트랜잭션2가 conn0을 커넥션풀에서 획득한다. 즉, 둘은 완전히 다른 커넥션으로 인지하는 것이 맞다. 그렇다면 둘을 구분할 수 있는 방법은 무엇일까? 히카리 커넥션풀에서 커넥션을 획득할 경우 히카리 프..

Spring/DB 2022.10.10

스프링 DB 2편 -9장. 스프링 트랜잭션 이해

스프링 DB 2편 -9장. 스프링 트랜잭션 이해 (인프런 - 김영한 강사님) DB1에서 배운 트랜잭션에 대해서 복습하자. 1. 스프링 트랜잭션 추상화 각각의 데이터 접근 기술들은 트랜잭션을 처리하는 방식이 다르다. 예를 들어 JDBC 기술과 JPA 기술은 트랜잭션을 사용하는 코드 자체가 다르다. 즉, JDBC 기술을 사용하다가 JPA 기술로 변경하게 되면 트랜잭션을 사용하는 코드도 모두 함께 변경해야 한다. 이를 위해 스프링은 PlatformTransactionManager라는 인터페이스를 통해 추상화를 제공한다. 트랜잭션은 시작(획득), 커밋, 롤백으로 단순하게 추상화할 수 있고 데이터 접근 기술에 대한 트랜잭션 매니저의 구현체도 제공한다. 우리는 구현체를 스프링 빈으로 등록하고 주입 받아서 사용하기만..

Spring/DB 2022.10.10

스프링 DB 1편 -4장. 스프링과 문제 해결 - 트랜잭션

스프링 DB 1편 -4장. 스프링과 문제 해결 - 트랜잭션 (인프런 - 김영한 강사님) 애플리케이션 구조는 주로 다음과 같다. 프레젠테이션 계층 - @Controller. UI 관련 처리. 웹 요청 응답, 사용자 요청 검증 - 주 사용 기술 : 서블릿과 HTTP 같은 웹기술, 스프링 MVC 사용 서비스 계층 - @Service. 비즈니스 로직 담당 - 주 사용 기술 : 가급적 특정 기술에 의존하지 않고 순수 자바코드로 작성함 데이터 접근 계층 - @Repository. 실제 데이터베이스에 접근하는 코드 - 주 사용 기술 : JDBC, JPA, File, Redis, Mongo 가장 중요한 계층은 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI와 관련된 부분이 변하고 데이터 저장 기술을..

Spring/DB 2022.09.19

스프링 DB 1편 -3장. 트랜잭션 이해

스프링 DB 1편 -3장. 트랜잭션 이해 (인프런 - 김영한 강사님) 트랜잭션이란? 트랜잭션(번역하면 거래 라는 뜻이다.) 이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 데이터베이스의 상태를 변화시킨다는 것은 무얼 의미하는 것일까? 간단하게 말해서 아래의 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미한다. SELECT INSERT DELETE UPDATE 작업의 단위는 질의어 한문장이 아니다. 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. (우리가 수업시간에 배웠던 예제에 접목하자면, A가 10000원, B가 10000원 있을 때, B가 A에게 2000원 송금하면 우리는 A에 +2000원, B에 -2000원 해줘야 한다...

Spring/DB 2022.09.19

스프링 MVC 2편 -10장. 스프링 타입 컨버터

스프링 MVC 2편 -10장. 스프링 타입 컨버터 (인프런 - 김영한 강사님) 타입 컨버터에 대해 배우는 단원이다. 문자를 받아서 숫자 타입으로 변경해야할 일이 있다고 하자. 매번 HttpServletRequest request를 불러서 파라미터를 받아 data에 저장하고, 문자 타입인 data를 Integer.valueOf(data)를 통해서 숫자 타입으로 변경해주기는 힘들다. -> @RequestParam 사용하기 스프링 MVC는 @RequestParam을 통해 타입을 중간에 변경해주므로 쉽게 타입을 변경할 수 있다. (@ModelAttribute, @PathVariable도 타입을 중간에 변경해준다.) 다음 코드에서 HTTP 쿼리 스트링으로 전달받는 data=10 부분에서 10은 문자 10이었으나 ..

Spring/MVC 2022.09.05

스프링 MVC 2편 -11장. 파일 업로드

스프링 MVC 2편 -11장. 파일 업로드 (인프런 - 김영한 강사님) 1) 폼 데이터 전송 방식 2) 서블릿을 이용한 파일 업로드 방식 3) 스프링을 이용한 파일 업로드 방식 순서이다. HTML 폼 전송 방식에는 두 가지가 있다. 1) application/x-www-form-urlencoded HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법이다. 전송할 항목을 HTTP Body에 문자로 username=kim&age=20 과 같이 &로 구분해서 전송한다. 문제점 : 이름, 나이, 첨부파일을 같이 전송해야 하는 경우, 이름, 나이는 문자로, 첨부파일은 바이너리로 전송해야 하므로 문자와 바이너리를 동시에 전송해햐 한다. 2) multipart/form-data Form 태그에 별도의 enctyp..

Spring/MVC 2022.09.05

스프링 MVC 2편-4장. 검증1 - Validation (김영한)

스프링 MVC 2편-4장. 검증1 - Validation (인프런 - 김영한 강사님) 타입검증 - 가격, 수량에 문자가 들어가면 검증 오류 처리 필드검증 - 상품명 : 필수, 공백 불가 - 가격 : 1000~1000000 - 수량 : 최대 9999 특정 필드 범위 넘어서는지 검증 - 가격*수량의 합 10000원 이상 사용자가 잘못 적으면 오류페이지를 보일게 아니라 그 전에 검증하고 제대로 입력할 것들을 다시 알려줘야 한다. 즉, 잘못 입력된 것이 있으면 상품등록 폼을 다시 보여주고, 제대로 입력한 값은 사용자가 입력한 값을 그대로 보여주며 잘못 입력한 값만 다시 입력하라고 해야 한다. 여기서, 제대로 입력한 값은 그대로 보여주어야 하므로 사용자가 입력한 값들을 모델에 입력하여 다시 보여줘야 한다. 컨트롤..

Spring/MVC 2022.08.29

스프링 MVC 2편-3장. 메시지, 국제화 (김영한)

스프링 MVC 2편-3장. 메시지, 국제화 (인프런 - 김영한 강사님) 메시지 '상품명' 이라는 단어를 '상품이름'으로 고쳐야 한다고 가정해보자. '상품명'이라는 메시지가 HTML 파일에 하드코딩 되어 있으면 모든 파일을 다 찾아가면서 '상품명'을 '상품이름'으로 고쳐야 한다. 이를 방지하기 위해 메시지들을 한 곳에 모아 관리하는 기능을 메시지 기능이라고 한다. messages.properties 파일에 다음과 같이 메시지들을 기록한다. 1 2 3 4 5 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 cs 추후에 필요할 때, 1 cs 위와 같이 th:text 로 key 값을 부르면 item.itemName 인 '상품명'을 쓸..

Spring/MVC 2022.08.29

스프링 MVC 1편 - 5장. 스프링MVC - 구조 이해 (김영한)

스프링 MVC 전체 구조 핸들러 매핑과 핸들러 어댑터 뷰 리졸버 스프링 MVC 시작하기 스프링 MVC 컨트롤러 통합 스프링 MVC 실용적인 방식 정리 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> ViewResolver MyView -> View 1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러를 조회한다. 2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 3. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다. 4. 핸들러 실행 5. M..

Spring/MVC 2022.08.22