일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 캠프
- annotation
- flask
- Redis
- Android
- 디자인 패턴
- JPA Lock
- 스프링 log
- component
- 서버
- Inno DB
- JPA 비관적락
- Transaction isolation level
- 서버개발캠프
- 개발
- 스마일게이트
- bean
- 스프링
- JPA 동시성
- 안드로이드
- spring security 인증
- spring security
- Optimistic Lock
- 낙관적락 비관적락 차이
- 스프링 로그
- JPA 낙관적락
- JPA
- 암호화
- Pessimistic Lock
- spring
- Today
- Total
목록스프링 (18)
모르는게 많은 개발자
이번 포스팅에서는 JPA의 낙관적 잠금과 비관적 잠금을 테스트를 통해 설명하고자 한다 포스팅 내용에 DB Lock 개념도 포함되기 때문에 Lock에 대한 이해가 필요하면 이전 게시글(https://cjw-awdsd.tistory.com/57)을 먼저 읽고 보는 것을 추천합니다. 낙관적 잠금(Optimistic Lock) 💡 대부분의 트랜잭션이 충돌이 발생하지 않을 것이라고 낙관적으로 가정하는 방법(**충돌 나면 에러 발생**) 어플리케이션 레벨에서 지원하는 락 락 처리 방법 : @Version JPA의 @Version 어노테이션을 사용해 엔티티 버전을 관리할 수 있다. @Version 적용이 가능한 타입은 long, integer, short, timestamp이다. 아래는 어노테이션 적용 예시 코드이다..
스프링 개발을 하다보면 자연스레 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)에 대해 알게 되었다. 이번 글에서는 멀티 모듈 개념/예제에 대해 알아보자. 멀티 모듈 이란? 멀티 모듈..
이번 포스팅에서 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..
저번 포스팅에서 엔티티 관련 어노테이션에 대해 썼다. 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 {} 주의 사항 기본 생성자가 꼭..