JPA 3

계좌 잔액 업데이트 동시성 문제 해결 과정

이 글에서는 프로젝트를 진행하면서 겪은 동시성 문제와 이를 해결한 과정을 기록하고자 한다. 주식 투자 시뮬레이션 프로젝트를 진행하는 과정에서, 나는 특정 주식에 대한 매도와 매수 기능을 구현해야했다. @RequiredArgsConstructor@Servicepublic class TradeService { private final TradeTraceService traceService; private final MemberRepository memberRepository; private final AccountRepository accountRepository; private final StockService stockService; @Transactional public..

백엔드 멘토링 2024.09.03

@OneToMany, @ElementCollection

트리플 클론 코딩을 하면서 여행지 추천 기능을 구현해야했다. 이때, 추천받은 여행지에 대해 사용자는 좋아요(찜) 을 할 수 있어야 했으며, 자신에게 달린 리뷰들을 저장해야 했다, 따라서 추천받은 여행지는 자신을 좋아요를 누른 사용자들의 id값을 List형식으로 가지고 있어야 하고, 자신에게 달린 Review들을 List형식으로 가지고 있어야 했다. 엔티티에 List를 저장하기 위해서는 @OneToMany를 통해 연관관계 매핑을 하거나 @ElementCollection을 사용, @Convert의 사용 이 3가지를 들 수 있으며 @Convert는 List를 String 형식으로 변환하여 저장하는 기능이고, 이번에는 @Convert를 제외한 @OneToMany와 @ElementCollection의 장단점들을 ..

백엔드 멘토링 2023.12.01

2023/04/10 - Spring 공부중 관련 질문들 [2]

생성자 생성자는 간단하게 얘기하면 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메소드'이다. 따라서 인스턴스 변수의 초기화 작업에 사용되고, 인스턴스 생성 시에 실행되어야 할 작업을 위해서 사용된다. 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. void 또한 사용하지 않는다. 생성자는 몇 가지 특징을 제외하면 메소드와 다르지 않다. 생성자는 메소드 처럼 클래스 내에 선언되고, 오버 로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 존재할 수 있다. JPA, JPA와 SQL mapper의 차이 JPA : (Java Persistence Api)의 약자로 자바 언어를 기반으로 한 ORM입니다. 이는 객체와 관계형 데이터베이스 간의 매핑을 처리해주며 개발자가 객체를 생성하고..

백엔드 멘토링 2023.04.13