일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- Invalid property 'principal.username' of bean class
- AccessToken
- multimodule testcontainers
- DI
- 낙관적 락 재시도
- 우아한 테크러닝
- 낙관적 락 롤백
- Spring Cloud Gateway
- aop
- 백준
- @transactional
- springsecurity
- spring aop
- jpa
- interface
- netty
- S3
- java
- kotest testcontainers
- 멀티모듈 테스트컨테이너
- TestContainers
- ObjectOptimisticLockingFailureException 처리
- 형상관리
- redissonlock aop
- 소수찾기 java
- ObjectOptimisticLockingFailureException
- OptimisticLock
- RefreshToken
- spring DI
- Today
- Total
목록전체 글 (66)
조급하면 모래성이 될뿐
문제 상황 동시에 같은 좌석이 예약이 되는 경우 적절한 예외를 발생시키고 싶었다. 현재 프로젝트에서 동시에 같은 좌석이 예약되는 경우 DataIntegrityViolationException이 발생한다 id의 조합으로 String타입 id를 생성한다. 따라서 동일한 id조합일 때 insert 할 때 예외가 발생한다. 해당 예외가 발생했을 때 예외 포인트를 정확히 기록하고자 try-catch로 감싸서 IllegalArgumentException을 발생시켰다. 하지만 예외가 잡히지 않았다... 테스트 코드 @Test @DisplayName("예약 실패 - IllegalException") void testReservationIllegalException() { // given User user = saveU..
무엇 ? 영화 정보를 등록할 때, 포스터 이미지를 로컬서버가 아닌 AWS S3에 저장하기 왜 ? EC2에 파일을 저장하는것보다 효과적이기 때문에 S3에 분리해서 저장한다. 메모리 공간이나, 파일관리도 S3를 사용하는 것이 더 유용하다. S3 특징 어떻게 ? 참조1 여기가 그나마 신뢰할 수 있다. 구글에서 1페이지에 포스팅된글은 다 봤는데 버킷 생성하는 부분을 설명한데가 한군데도 없어서 화딱지가 난다. 버킷 정책을 편집해서 Json을 가져다 붙이는데, 왜 붙이는지 설명한곳이 한군데도 없다. 더군다나 이렇게 적용해도 안된다. 없어도 잘 된다. 1. S3 버킷을 생성한다. 처음에 객체 소유권에서 ACL을 활성화 하지 않았더니 SpringBoot에서 접근이되지 않았다. 퍼블릭 액세스도 모두 풀어버린다. 실제 서..
문제 상황 public class ReservedSeatService { private final ReservedSeatRepository reservedSeatRepository; private final SeatConverter seatConverter; private final SeatService seatService; private final ScheduleService scheduleService; public ReservedSeatService(ReservedSeatRepository reservedSeatRepository, SeatConverter seatConverter, SeatService seatService, ScheduleService scheduleService) { this..
Entity 관계 1개의 스케줄에는 예매된 N개의 예매 좌석 정보가 존재한다. ex) A영화관 B영화의 C 상영관의 13:00에 예매된 좌석은 0, 1, 2이다. 예매 좌석 정보와 좌석 정보(seat)와 1:N 관계를 맺고 있다. ReservedSeat(1)에서 Seat(N) 정보를 가져온다. 의도한 것 스케줄 id로 검색해서 예약 좌석 정보를 가져온다 (ReservedSeat) 좌석정보를 내려주기 위해 ReservedSeat에 포함된 Seat객체를 dto객체로 convert 한다. AS-IS ReservedSeatService.java public List findByScheduleId(Long scheduleId) { return reservedSeatRepository.searchByIdStarts..
문제 상황 설계한 Entity의 id가 Auto Increament값이 아니다. 생성자가 호출되는 시점에 fk의 조합으로 생성된다. makeReservedSeatId 함수에서 만들어진다. @Entity @Table(name = "reserved_seat") public class ReservedSeat { public static final String ID_SEPARATOR = "_"; @Id @Column(name = "id") private String id; ... private void makeReservedSeatId(Long scheduleId, Long seatId) { this.id = new StringBuilder() .append(scheduleId) .append(ID_SEPARA..