일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pessimistic Lock
- Android
- spring
- Inno DB
- JPA 비관적락
- spring security 인증
- 낙관적락 비관적락 차이
- flask
- JPA
- 서버개발캠프
- spring security
- bean
- 안드로이드
- JPA Lock
- 스프링 로그
- 스프링
- JPA 낙관적락
- Transaction isolation level
- Optimistic Lock
- 암호화
- 서버
- 스마일게이트
- 개발
- JPA 동시성
- Redis
- component
- 스프링 log
- 캠프
- 디자인 패턴
- annotation
- Today
- Total
목록전체 글 (55)
모르는게 많은 개발자
이번 포스팅에서는 JPA의 낙관적 잠금과 비관적 잠금을 테스트를 통해 설명하고자 한다 포스팅 내용에 DB Lock 개념도 포함되기 때문에 Lock에 대한 이해가 필요하면 이전 게시글(https://cjw-awdsd.tistory.com/57)을 먼저 읽고 보는 것을 추천합니다. 낙관적 잠금(Optimistic Lock) 💡 대부분의 트랜잭션이 충돌이 발생하지 않을 것이라고 낙관적으로 가정하는 방법(**충돌 나면 에러 발생**) 어플리케이션 레벨에서 지원하는 락 락 처리 방법 : @Version JPA의 @Version 어노테이션을 사용해 엔티티 버전을 관리할 수 있다. @Version 적용이 가능한 타입은 long, integer, short, timestamp이다. 아래는 어노테이션 적용 예시 코드이다..
현업 개발에서 JPA또는 Query를 짜면서 DB작업을 해오면서 최근에 DB에 대한 지식이 부족한 것 같아 이번에 트랜잭션과 Lock 관련된 내용과 예제를 정리해놓으려한다. 공부하면서 정리하다보니 잘못된 정보가 있을 수 있다. 만약 잘못된 내용이 있다면 댓글로 알려주시길 바랍니다.. Transaction이란? DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산 다시 말하면 여러 SELECT, UPDATE, DELETE SQL 구문이 모두 처리되어야하는 하나의 프로세스가 있다면 이 프로세스가 완전히 성공하거나 중간에 실패하면 프로세스를 실행하기 전 상태로 롤백하는 기능이다. Transaction 특징(ACID) Atomicity(원자성) 트랜잭션..
스프링 개발을 하다보면 자연스레 Lombok의 @Slf4j 를 사용해 log.info() 등 로그를 남겼다. 이번 기회에 Jcl, Log4j, Slf4j, Logback용어 정리와 많이 사용되는 Logback 설정에 대해 정리해놓고자한다. 스프링 부트는 어떤 Logger를 사용하고 있나 스프링에는 크게 Jcl(Jakarta Common Logging), Slf4j 두개의 로깅 추상화 라이브러리가 있다. 두개 모두 인터페이스만 존재하기에 구현체가 필요한데 Jcl의 구현체는 Log4j, Slf4j의 구현체는 Logback이 있다. 스프링 부트는 기본적으로 Jcl에 구현체 Logback 이 사용된다. spring-boot-starter 의존성에 spring-boot-starter-logging이 들어있고 안에..
최근 진행하는 토이 프로젝트의 API 서버는 서로 독립된 프로젝트 2개로 이루어져있었다. 인증 서버 어플리케이션 서버 처음에는 기능 구현 자체에 초점을 맞추고 각자의 프로젝트 크기도 크지 않아서 불편함을 느끼지 못했다. 하지만 프로젝트를 진행하면서 크기가 커지면서 domain 을 각각 프로젝트에 선언했기 때문에 동일성을 보장하기 위해 똑같은 작업을 두개의 Applicaton에 작업을 해줘야했다. 또한 공통적인 Repository도 각 Application에서 작성해줘야하는게 여간 번거로운게 아니었고, 똑같은 코드가 생긴다는게 썩 마음에 들지 않았다. 그리고 알아보던중 멀티 모듈(Multi Module)에 대해 알게 되었다. 이번 글에서는 멀티 모듈 개념/예제에 대해 알아보자. 멀티 모듈 이란? 멀티 모듈..
이번 포스팅에서는 팩토리 패턴의 개념에 대해 포스팅하고자 한다. 1. 심플 팩토리 패턴 팩토리 패턴에는 팩토리 메소드 패턴, 추상 팩토리 패턴이있다. 이 두가지 패턴을 알기전에 먼저 심플 팩토리(Simple Factory)패턴에 대해 간략하게 설명하고 가자. 심플 팩토리 패턴은 간단하게 말해서 객체를 생성하는 클래스를 따로 두는 것을 의미한다. 클라이언트에서 휴대폰을 주문하는 코드를 예시로 해보자. //휴대폰을 만드는 공장 public class SimplePhoneFactory { public Phone orderPhone(String type) { Phone phone = createPhone(type); phone.complete(); return phone; } private Phone creat..
이번 포스팅에서 Kafka의 Connector의 대해 포스팅하고자한다. Kafka Connect란? 먼저 Kafka는 Producer와 Consumer를 통해 데이터 파이프라인을 만들 수 있다. 예를 들어 A서버의 DB에 저장한 데이터를 Kafka Producer/Consumer를 통해 B서버의 DB로도 보낼 수 있다. 이러한 파이프라인이 여러개면 매번 반복적으로 파이프라인을 구성해야줘야한다. KafkConnect는 이러한 반복적인 파이프라인 구성을 쉽고 간편하게 만들 수 있게 만들어진 Apache Kafka 프로젝트중 하나다. 위 사진을 보면 Kafka Connect를 이용해 왼쪽의 DB의 데이터를 Connect와 Source Connector를 사용해 Kafka Broker로 보내고 Connect와 ..
최근 Spring Cloud에 대해 학습한 것을 정리하고자한다. 이번 글에서는 Eureka개념과 Eureka Server 생성 예제를 정리한다. Eureka는 무엇인가? Eureka는 클라우드 환경의 다수의 서비스(예: API 서버)들의 로드 밸런싱 및 장애 조치 목적을 가진 미들웨어서버이다. 로드 밸런싱 : 특정 서비스를 제공하는 서버가 여러대가 있을 때 트래픽을 한 서버에 몰리지 않게 분산해주는 기술이다. 미들웨어 : 데이터를 주고 받는 양쪽의 서비스(웹의 예로 클라이언트와 API 서버)의 중간에 위치해 매개 역할을 하는 소프트웨어다. Eureka는 이러한 미들웨어 기능을 하기 위해 각 연결된 서비스의 IP / PORT /InstanceId를 가지고 있고 REST기반으로 작동한다. Eureka는 Cl..
이번 글에서는 스프링의 Validation 하는 방법인 Validator과 Bean Validation에 대해 알아보자. Validator 첫번째 방법은 Validator Interface를 사용한 방법이다. Validation Interface는 다음과 같이 정의되어있다. public interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors); } 위 Interface를 구현하고 스프링에서 제공하는 WebDataBinder를 통해 등록해서 사용할 수 있다. WebDataBinder는 스프링 파라미터의 바인딩과 검증 기능을 제공한다. Validator 구현체를 다음과 같이 구현했다. @Com..