본문 바로가기

Java/Spring

(6)
Transaction 트랜잭션은 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 이며 ACID (원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 출처 - https://ko.wikipedia.org/wiki/ACID 즉, 트랜잭션은 하나의 최소 단위의 작업에 여러가지 데이터 변경을 넣으면, 모두 저장되거나, 아무 것도 저장되지 않거나를 보장한다. 만약, A계좌에서 B계좌로 20만원을 보낸다고 가정했을때, A 계좌 잔고 200,000 원 이상 확인 A 계좌 잔고: 1,000,000 원 A 계좌 잔고 200,000 원 금액 감소 A 계좌 잔고: 800,000 원 (1,000,000 원 - 200,000 원) B 계좌 잔고 200,000 원 금액 ..
JWT JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다. 즉 토큰의 한 종류이다. 보통 쿠키 저장소에 담긴다. JWT의 사용 이유 1.서버가 1대인 경우 Session1 이 모든 Client 의 로그인 정보 소유 2.서버가 2대 이상인 경우 서버의 대용량 트래픽 처리를 위해 서버 2대 이상 운영 필요 Session 마다 다른 Client 로그인 정보를 가지고 있을 수 있음 Session1: Client1, Client2, Client3 Session2: Client4 Session3: Client5, Client6 Client 1 로그인 정보를 가지고 있지 않은 Sever2 나 Server3 에 API 요청을 하게되면 어떻하지?..
인증과 인가 스프링에서 “인증”과 “인가”를 관리해주는 것 = 스프링 시큐리티 인증(Authentication)은 해당 유저가 실제 유저인지 인증하는 개념이다. ex) 휴대폰 지문인식, 사이트 로그인 인가(Authorization)는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다. ex)관리자 페이지에는 관리자만 접근할 수 있다. 웹 어플리케이션의 인증 1.쿠키-세션 방식의 인증 쿠키-세션 방식은 서버가 특정 유저가 로그인 되었다는 상태를 저장하는 방식이다. 인증과 관련된 아주 약간의 정보만 서버가 가지고 있게 되고 유저의 이전 상태의 전부는 아니더라도 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념이다. 사용자가 로그인 요청을 보낸다. 서버는 DB의 유저 테이블에서 아이디와 ..
의존성 주입 - 스프링 IoC컨테이너 의존성 주입을 사용하기 위해서는 객체 생성이 우선 되어야 한다. 이때, 스프링 프레임워크는 필요한 객체를 생성하여 관리하는 역할을 대신 해준다. 빈 (Bean): 스프링이 관리하는 객체 스프링 IoC 컨테이너: '빈'을 모아둔 통 '빈' 등록 방법 이전 글(https://move22.tistory.com/148)에서 쓴 Water와 Cup을 예시로 쓰자면 다음과 같다. 1.@Component @Component public class Water {} 스프링 서버가 실행될 때 스프링 IoC 에 '빈'을 저장해 준다. 1-1. 스프링이 @Component 객체에 대해서 하는 일 // 1. Water 객체 생성 Water water = new Water(); // 2. 스프링 IoC 컨테이너에 빈 (water..
의존성 주입 - 강한결합 Spring의 의존성 주입이란 스프링 컨테이너가 객체간에 의존성을 부여하는것을 의미한다. DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부른다. 강한결합 의존성 주입이 되지 않은 '강한 결합'의 예시와 문제는 다음과 같다. 1.컵에 물이 담긴다는 의미로 객체 'Cup'과 'Water'를 생성하여 사용한다. Water.java public class Water{ ... } Cup.java public class Cup{ private final Water water; public Cup() { this.water = new Water(); } } 이때, Cup에는 새로 water을 생성하여 사용해주었다. 2.Water객체에 식용인지 아닌지 구분하기 위해서 생성자에 di..
영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장 하는 환경 이라는 뜻이다. 어플리케이션이 데이터베이스에서 꺼내온 데이터 객체를 보관하는 역할을 한다. 영속성 컨텍스트는 엔티티 매니저를 통해 엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리한다. 영속성 컨텍스트 = 엔티티 매니저마다 가지고 있는 어떠한 공간 영속화 한다 = 엔티티 매니저가 자기의 영속성 컨텍스트에 넣어준다 JPA 엔티티의 상태 비영속(New) : 영속성 컨택스트와 관계가 없는 새로운 상태이다. 해당 객체의 데이터는 실제 DB의 데이터와는 관련없고, 그냥 Java 객체인 상태다. 영속(Managed) : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태이다. 이와 같은 경우 데이터의 생성, 변경등을 JPA가 추적하면서 필요..