Resource Owner(사용자)Client(개발서버)Authorization Server(인증하고 토큰을 발급해주는 서버)Resource Server(네이버, 카카오, 구글 같은 API를 제공하는 서버)플로우
트랜잭션 - 개념트랜잭션이란 하나의 서비스 로직을 안전하게 처리하도록 보장해주는 것을 뜻한다.트랜잭션 ACID1. 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야한다. 2. 일관성: 모든 트랜잭션은 일관성있는 데이터베이스 상태를 유지해야한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.3. 격리성: 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준을 선택할 수 있다.4. 지속성: 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야한다.DB ..
JWT(JSON Web Token)인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미.Access Token을 HTTP헤더에 실어 서버가 클라이언트를 식별하는 방식.JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것JWT 구조Header{ "alg":"HS256", "type":"JWT"}alg : 서명 암호화 알고리즘(ex: HMAC SHA256, RSA)typ : 토큰 유형Payload토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다. (실제 JWT 를 통해서 알 수 있는 데이터)서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내용을 담고있다.key-value 형식으로 이루어진 한 쌍의 정보를 Claim이라고 칭한다..
일반 Join일반 조인을 하는 경우 조회의 주체가 되는 엔티티만 불러온다.만약 조인된 엔티티의 다른 값을 조회하게 된다면 아래처럼 select 쿼리를 호출하게된다. select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from ..
객체지향은 4가지 특징이 있다. 캡슐화 추상화 상속화 다형성 - 캡슐화는 외부에서 데이터 또는 기능에 직접 접근을 못하도록 하는 개념이다. 만약 직접 접근을 할 수 있다면 예상치 못한 문제가 발생될 확률이 높아지고 유지보수도 어려워질 것이다. - 추상화는 공통적인 속성과 기능들을 정의하는 것을 말한다. 추상화를 하게되면 중복코드가 줄어들며 코드의 재사용성이 증가하고 코드가 깔끔해진다. 자바에서는 추상화를 인터페이스와 추상클래스로 구현할 수 있다. 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다. 인터페이스를 사용하는 이유는 추상 클래스는 다중 상속을 지원하지 않지만 인터페이스는 다중 상속을 지원한다. 그리고 ..
인터넷강의로 spring 공부를 하다가 무상태성이라는 단어를 듣게 되었다. 스프링의 디자인 패턴은 디폴트가 싱글톤방식이다. 싱글톤이란, 메모리에 하나의 인스턴스만 존재하도록 생성하는 방식을 말한다. 이때 여러 쓰레드에서 같은 인스턴스의 전역변수에 접근을 하게된다면 같은 값을 공유하게 돼버린다. 생각만해도 정말 끔찍하다... 위와 같은 상황을 상태유지(Stateful)라고 하며 의도적으로 상태유지를 하는것이 아니라면, 스프링 빈은 항상 무상태(stateless)로 설계해야 한다. 무상태란 한번의 요청과 응답이 이루어지면 연결이 끊기는것을 의미한다. 상태유지와 무상태에 대해 알아보며 싱글톤에 대해도 다시한번 공부하게 되었고 정말 스프링을 잘 이해하고 코딩 해야한다고 생각했다. 통상적으로 서비스를 운영하다보면..