일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- springsecurity
- 우아한 테크러닝
- OptimisticLock
- redissonlock aop
- java
- Invalid property 'principal.username' of bean class
- ObjectOptimisticLockingFailureException
- 멀티모듈 테스트컨테이너
- 낙관적 락 롤백
- Spring Cloud Gateway
- 낙관적 락 재시도
- netty
- multimodule testcontainers
- AccessToken
- 알고리즘
- S3
- 형상관리
- DI
- 소수찾기 java
- interface
- spring aop
- ObjectOptimisticLockingFailureException 처리
- 백준
- aop
- spring DI
- TestContainers
- kotest testcontainers
- jpa
- @transactional
- RefreshToken
- Today
- Total
목록TroubleShooting/데브코스 (10)
조급하면 모래성이 될뿐
문제 상황 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..