일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링 log
- spring security 인증
- spring
- 암호화
- JPA Lock
- JPA
- 개발
- 디자인 패턴
- 서버
- Redis
- Pessimistic Lock
- Inno DB
- JPA 비관적락
- 서버개발캠프
- flask
- Transaction isolation level
- JPA 낙관적락
- 스마일게이트
- component
- 안드로이드
- bean
- Android
- 낙관적락 비관적락 차이
- Optimistic Lock
- JPA 동시성
- 스프링 로그
- annotation
- 캠프
- spring security
- 스프링
- Today
- Total
목록전체 글 (55)
모르는게 많은 개발자

이번 포스팅에서는 Git 브랜치 병합 전략에 대해 포스팅하려 한다. 평소에 Git을 사용하며 Merge만 거의 사용해서 브랜치를 합쳤는데 이렇게 하니 히스토리가 지저분해진 것을 보고 Rebase와 Squash에 대해 제대로 알고 사용하고자 정리해놓으려한다. 브랜치 병합 전략에는 3가지가 있다. 1. Merge 2. Rebase Merge 3. Squash Merge 1. Merge 먼저 가장 기본 병합 방법인 Merge에 대해 알아보자. Merge에는 여러가지 방식이 있지만 크게는 두가지의 방식이 많이 사용된다. Fast-Forward 3-Way-Merge Fast-Forward 먼저 아래의 Commit 히스토리를 보자. master 브랜치에서 생성된 A 브랜치가 두 번의 Commit을 한 상태이다. 이..

최근 REST API 서버를 구현하며 Spring Security로 JWT 인증을 구현했다. Access_Token, Refresh_Token을 어디다 저장할지에 대해 고민하다 CSRF에 대한 긍금증까지 생기게 되어 공부를 했다. 이번 포스팅은 JWT에 저장소에 대한 고민하면서 공부한 내용들을 정리한 글이다. 1. JWT 발급 프로세스 먼저 기존에 필자가 구현한 JWT 발급 프로세스를 간단히 살펴보자. 로그인 요청시 인증 서버에서 accessToken, refreshToken을 발급해 Header를 통해 전달 API요청시 accessToken을 Header에 넣고 요청 만약 accessToken이 만료일 경우 인증 서버로 refreshToken을 전달해 재발급 받는다. 여기서 accessToken과 re..

저번 포스팅에서 엔티티 관련 어노테이션에 대해 썼다. cjw-awdsd.tistory.com/46 [JPA] 2. 엔티티 매핑 @어노테이션 정리/예제 이번 글에서는 JPA 엔티티 매핑과 관련된 어노테이션 @Entity, @Table, @Id, @Column에 대해 정리한다. 연관관계 매핑 관련 어노테이션은 다음 글에 포스팅하겠다. 1. @Entity @Entity 어노테이션은 JPA를 사용 cjw-awdsd.tistory.com 이번에는 이어서 엔티티 연관 관계 매핑에 대해 정리하고자 한다. 1. 들어가기전 설명에 앞서 관계형 데이터베이스와 JPA 엔티티에 대해 비교를 해보자. 관계형 데이터베이스는 테이블간 foreign key로 연관관계를 맺고 JOIN을 통해 테이블을 조회한다. 예를 들어 Team이라..

이번 글에서는 JPA 엔티티 매핑과 관련된 어노테이션 @Entity, @Table, @Id, @Column에 대해 정리한다. 연관관계 매핑 관련 어노테이션은 다음 글에 포스팅하겠다. 1. @Entity @Entity 어노테이션은 JPA를 사용해 테이블과 매핑할 클래스에 붙여주는 어노테이션이다. 이 어노테이션을 붙임으로써 JPA가 해당 클래스를 관리하게 된다. 속성 기능 name JPA에서 사용할 엔티티 이름 지정 name을 쓰지 않을 경우 (default) 클래스이름을 엔티티 이름으로 지정 아래의 코드 결과를 보면 name = "user2"로 함으로써 user2 테이블이 생성된 것을 볼 수 있다. @Entity(name = "user2") public class User {} 주의 사항 기본 생성자가 꼭..

예전 포스팅에서 security 관련 예제를 다룬적 있다. 당시에는 내부 프로세스를 모르고 예제를 보면서 UserDetails, UserDetailsService, Authentication만 커스텀해서 인증을 다뤘다. 이번 토이프로젝트에서 OAuth로그인을 도입하다 내부프로세스를 세세히 분석해게 되어 까먹기 전에 분석한 내용을 정리하고자 한다. 이 글을 읽을 때 기본적으로 Principal, Authorities, UserDetails, UserDetailsService, Authentication의 개념을 알고 있다는 전제하에 글을 쓴다. Spring Security는 기본적으로 여러개의 Filter객체들이 순차적으로 수행되는 방식이다. Spring Security는 Filter객체들의 집합체라고도 ..

1. 옵저버 패턴 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들(Observer) 목록을 '이벤트를 발생시키는 이벤트 객체'에 등록하여 이벤트가 발생할 때마다 메소드를 통해 관찰자들(Observer) 객체들에게 알려주어 그에 맞게 행위를 하는 디자인 패턴이다. 아래 UML 다이어그램을 보자 Observer라는 인터페이스에는 notify()라는 함수가 정의되있다. notify()는 이벤트가 발생했을 때 처리할 행위를 정의한다. Subject(이벤트 발생 객체)에는 observerCollection이 존재하는데 여기에 Observer객체들이 저장된다. 그리고 notifyObservers()는 Observer 객체들의 목록들의 notify()를 실행해 이벤트 발생에 따른 처리를 각 Observer에게 전..
1. 빌더 패턴 빌더 패턴은 객체를 생성할 때 흔하게 사용하는 패턴이다. 아래와 같은 방식으로 객체가 생성되면 Builder Pattern을 활용한 것이다. Person person = Person.builder() .name("a") .age(13) .build(); 빌더 패턴은 흔히 생성자 인자 많을 때 고려된다. 빌더 패턴 구현 예제를 보기전에 객체를 만드는 패턴 두가지를 알아보자. 2. 점층적 생성자 패턴 점층적 생성자 패턴은 내가 사용할 인자를 받는 생성자를 모두 만드는 것이다. 예를 들어 아래 코드처럼 a만 인자로 받는 생성자가 필요할 수도 있고, a, b, c, d를 모두 받는 생성자가 필요한 등 내가 사용할 생성자들을 모두 만들어서 사용하는 패턴이다. class Person { String..
1. 싱글톤 패턴 싱글톤 패턴이란 클래스의 인스턴스를 하나만 생성하여 사용하는 패턴이다. 주로 특정 객체를 여러곳에서 공유해야 할 때 사용한다.(Ex: DB Conntection pool) 싱글톤 패턴을 이용함으로써 메모리에 인스턴스 하나를 등록해 여러 쓰레드에서 동시에 하나의 객체를 이용할 수 있게 할 수 있다. 이것으로 인해 주의할 점은 여러곳에서 동시에 접근해서 생길 수 있는 문제(동기화 문제)를 잘 파악하고 설계해야한다. 싱글톤 패턴을 만들땐 기본적으로 생성자를 private로 해서 외부에서는 직접 인스턴스를 생성할 수 없게 하고, 사용자에게 인스턴스를 전달하는 static 메소드가 있다. 아래 예제를 보자. 아래 예제를 보면 객체는 오로지 getInstance()를 통해서만 생성되거나 얻을 수 ..