본문 바로가기

개발/Database

(2)
[MySQL] 테이블에서 중복을 피하는 방법 Background먼저 왜 이러한 고민을 하게 되었는지 배경을 정리하고자 합니다. 이번에 사용한 Database는 MySQL이고, 엔진은 InnoDB 입니다. ( * MySLQ 사용 엔진은 SELECT engine FROM information_schema.TABLES where table_name=’your_table_name’ 으로 확인할 수 있습니다) 데이터를 insert 할 때, 두 필드를 조건으로 유니크함을 보장해야 했습니다. 단순히 두 필드를 복합키를 걸어서 유니크 키로 사용하면 해결될 문제입니다. 하지만 복합키를 사용할 수 없는 상황이었습니다. ** Composite Key 를 허용하지 않음저희 회사에서는 테이블에 Composite Key 복합키를 허용하지 않습니다. 또한 모든 테이블은 Au..
[JPA Lazy Evaluation] LazyInitializationException: could not initialize proxy – no Session Basic InformationLazyInitializationException: could not initialize proxy - no SessionJPA 관련해서 작업을 하다보면 위와 같은 에러메시지를 만나곤 합니다. 무슨 의미일까? JPA Session여기서 Session 은 JPA 영속성 컨텍스트가 유지되는 하나의 세션을 의미합니다. 즉, 트랜잭션 시작 ~ 트랜잭션 끝 까지를 의미합니다. 언제 이런 예외가 발생할까?? 회원가입을 예로들면, 회원가입을 구현하기 위해 1. 중복체크 2. 데이터 저장 순서로 보통 구현합니다. 아래 예에서는 중복체크를 위해 getOne을 이용해서 Lazy 엔티티를 가져왔습니다. (getOne에 대해서는 아래 부분에서 설명합니다.)그리고 엔티티에 필요한 작업을 하고 저장..