새로운 값 타입을 직접 정의할 수 있음JPA는 임베디드 타입(embedded type) 이라 함주로 기본 값 타입을 모아서 만들어서 복합 값 타입이라고도 한다.int, String 과 같은 값 타입idnamestartDateendDatecitystreetzipcode위
프록시(Proxy)는 대리자 라는 뜻으로, 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 역할을 한다.프록시는 실제 대상인 것처럼 위장함으로서 이를 사용하는 클라이언트는 구체 클래스를 알 필요가 없어진다.또한 프록시는 클라이언트의
영속성 컨텍스트엔티티를 영구 저장하는 환경이라는 뜻EntityManager.persist(entity)persist 메서드 는 db 에 저장하는게 아니라 엔티티 영속성 컨텍스트에 저장한다고 보면 된다.눈에 보이지 않는다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다
본 프로젝트 자료는 김영한님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발을 참고 제작됐음을 알립니다. 상품 도메인 개발 > Item - 상품 엔티티 코드 추가 addStock() 메서드는 파라미터로 넘어온 수만큼 재고를 늘린다. 이 메서드는 재고
본 프로젝트 자료는 김영한님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발을 참고 제작됐음을 알립니다.예제에서는 엔티티 클래스에 @Getter, @Setter를 모두 열어두려고 한다. 연습이라 열어두지만 실무에 들어가면 가급적 @Getter 는 열어두고
본 프로젝트 자료는 김영한님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발을 참고 제작됐음을 알립니다.다시 복습하는 느낌으로 제작했다.HelloController - 컨트롤러 생성@Controller 는 화면 View 와 비즈니스 로직인 Model 를
본 프로젝트 자료는 김영한님의 스프링 DB 2편 - 데이터 접근 활용 기술을 참고 제작됐음을 알립니다.일단 기본 베이스를 깔고가는 코드들을 설명하고자 한다.Item - 도메인 생성이름, 가격, 수량을 속성을 가진 Item 객체 다.ItemRepository - 인터페이
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.서비스 계층이 특정 구현 기술에 의존하지 않고 순수한 계층으로 유지하고 싶다면 예외에 대한 의존도를 해결해야 한다.그럼 어떻게 해야할까?바로 SQLException 체
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.다들 알다시피 Object 는 최상위 부모 다 <-> 예외의 부모도 최상위 부모다.Throwable : 최상위 예외, 그 밑에 Exception 과 Error
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다. 트랜잭션 문제점들을 알아볼려고 한다. 애플리케이션 구조 가장 단순하면서 많이 사용하는 3가지 계층 구조가 있다. 프레젠테이션 계층 UI와 관련된 처리 담당 웹
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.트랜잭션 - 적용1실제 애플리케이션에서 DB 트랜잭션을 사용해서 계좌이체 같이 원자성이 중요한 비즈니스 로직을 어떻게 구현하는지 알아보자.먼저 트랜잭션 없이 단순하게
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.계좌이체라는 예제를 만들어 다음과 같은 3가지 상황을 알아볼려고 한다.계좌이체 정상계좌이체 문제 상황 - 커밋 계좌이체 문제 상황 - 롤백일단 기본 데이터가 입력된 테
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.트랜잭션은 직역하면 거래라는 뜻이다. 데이터베이스라는 개념에 거래가 왜 필요할까?그 이유는 단순 데이터를 저장하기만 하면 간혹 오류가 발생할 수 있다. 예를 들어 A
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은
본 프로젝트 자료는 김영한님의 스프링 DB 1편 - 데이터 접근 핵심 원리을 참고 제작됐음을 알립니다.데이터를 담기 위해 만들어진 데이터베이스라 보면 된다.동작원리TCP/IP 를 사용해서 커넥션 연결.DB 가 이해 할 수 있는 SQL 을 연결된 커넥션 통해 DB 전달D
본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.파일 업로드 관련 내용 공부하기 전 기본화면 구성 제작HTML - 홈서블릿을 통해 파일 업로드 관련 내용을 공부해볼려고 한다.일단 클래스를 생성해보자.Servle
본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.문자를 숫자로, 숫자를 문자로 타입 변환해야 하는 경우가 생긴다. 이때 스프링 타입 컨버터를 사용해 간편하게 변경할 수 있다.스프링을 사용하고 안하고 변경했을 때
본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.스프링 부트가 기본으로 제공하는 ExceptionResolver 는 다음과 같다. @ExceptionHandler 을 처리한다. API 예외 처리는 대부분 이 기
본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.오류 페이지는 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있지만, API의 경우에는 생각할 내용이 더 많다.오류 페이지는 단순히 사용
본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.지금까지 서블릿으로 오류 페이지 만들기 위해 많은 과정을 쌓아야 한다.WebServerCustomizer예외 종류에 따라서 ErrorPage 를 추가예외 처리용