spring boot
-
[JPA] Primary Key가 아닌 필드를 참조하는 Foreign Key 를 만들때개발 2021. 12. 12. 17:27
Primary Key가 아닌 필드를 참조하는 Foreign Key 를 만들때 @JoinColumn(referencedColumnName = [참조하는 필드 이름]) 오류 상황 Stock 이라는 테이블과 DailyStock 이라는 데이터 필드의 일대다(1:N) 매칭 시 일어난 문제이다. Price 는 Stock 의 tickerSymbol 이라는 필드를 참조하고 있다. Price @Entity public class Price { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "price_id") private Long priceId; @ManyToOne @JoinColumn(name = "ticker_symbol") priva..
-
@Transactional 태그 안에서 Exception Handling 시 유의 할 점개발 2021. 8. 27. 00:04
@Transactional 태그 안에서 Exception Handling 시 유의 할 점 컨텍스트 설명 1. 요구사항 로그인이 실패할 때마다 그 횟수를 세고, 틀린 횟수가 5가 될 경우 계정을 잠금처리 해주세요 2. 내 접근법 로그인 시 비밀번호가 틀렸을 경우 member table 의 특정 필드를 +1 해주고, 그 필드 값이 5와 같을 경우 Exception 을 던지자 3. 마주친 문제 기존 코드는 이랬다. @Service public class AuthService { @Transactional(propagation = Propagation.REQUIRES_NEW) public UserProj authenticate(String emailAddress, String password) { UserPro..
-
[JPA] Entity를 통해서 변경한 데이터를 DB는 어떻게 알아먹을까? → 영속성 관리개발 2021. 7. 28. 20:54
[JPA] Entity를 통해서 변경한 데이터를 DB는 어떻게 알아먹을까? → 영속성 관리 서버 코드 보고, QueryDsl 도 다루어 보면서 생긴 몇가지 궁금증을 해소해 주었던 지식을 기록 일단 궁금했던 점들 QueryDsl 을 작성할 줄 알고, 쓸 줄도 알겠어. 그런데 이 쿼리가 DB로 날라가는건 대체 어떤 시점이야? → 이 시점을 근본적으로 이해할 정도의 구조적 지식이 필요했다. 그 전에, JPA를 통해서 DB 테이블 정보를 바꿀 때는 member.setId(id) 이런 식으로 바꾼다. DB에 쿼리를 날린 것도 아니고, 트랜잭션을 따로 끝낸 적도 없는데 이게 어떻게 DB에 반영이 되는거야? → Dirty Checking! 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저는 말 그대로 엔티티를 관리..