• JPA 와 mybatis 를 같은 Transaction 에서 사용하기

    수정일: 2026-10-11. 2019년의 Spring Boot 2.1·JUnit 4 예제를 Boot 3·Jakarta Persistence·JUnit 5 기준으로 다시 정리했다. 검증 범위는 Spring/MyBatis 공식 문서의 트랜잭션 참여 조건·버전 호환표와, 본문 코드를 그대로 추출한 H2 통합 테스트 2개다. JDK 21.0.2·Maven 3.10.0에서 두 테스트가 통과했다. Java 17은 컴파일 기준이며 Java 17 런타임, Boot 4, 운영 DB의 격리...


  • enum으로 JPA 상속관계 구분 컬럼 지정

    클래스의 상속관계를 JPA로 표현하기위해서 @DiscriminatorColumn 애노테이션으로 부모 클래스의 구분 컬럼을 지정하고 @DiscriminatorValue 애노테이션으로 자식 클래스가 사용할 구분자 값을 지정한다. @DiscriminatorValue는 String 타입을 Value 로 지정하게 되어있다. 일반적으로 구분자 또는 타입 같은 값은, 값 리스트들을 체계적으로 관리하기위해 enum 으로 선언해 사용하고는 하는데 이것을 JPA에 바로 적용할 수가 없다. 이 포스트에서는 enum을...


  • The server time zone value 'KST' is unrecognized 예외 발생시

    IntelliJ에서 로컬에서 동작하고 있는 mysql 에 직접 접속하려고 하다보니 The server time zone value 'KST' is unrecognized or represents more than one time zone. 오류가 발생하였다. 개발할 때에는 Datasource의 url에 ?serverTimeZone=Asia/Seoul 를 추가하면 대부분 해결이 된다. IntelliJ에서는 DB 접속정보를 넣는 화면의 URL에 직접 넣으면 해결되지 않는다. Advanced 탭에 들어가서 serverTimezone에...


  • LocalContainerEntityManagerFactoryBean 에 null 를 리턴할 때

    LocalContainerEntityManagerFactoryBean 을 이용해서 직접 Bean 을 등록할 때 LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); return emf.getObject(); 를 하면 null 이 리턴된다. 이유는 LocalContainerEntityManagerFactoryBean 는 AbstractEntityManagerFactoryBean 을 상속하여 구현하는데 이 클래스의 메소드 afterPropertiesSet() 가 모든 속성값이 세팅이 다 됐음을 알리는 역할을 한다. XML 로 Bean 설정을 하면 BeanFactory 가 이 메소드를 호출하지만...


  • 자주쓰는 GIT 명령어 정리

    가져오기 리모트에 있는 브랜치를 Local로 가져오면서 브랜치 만들기 git checkout -b <생성할Local브랜치이름> <원격브랜치이름> 다른 브랜치에서 일부 파일만 가져오기 git checkout --patch <가져올브랜치이름> <가져올 파일이름> y-stage n-no stage a-stage all hunk 합치기 merge 시작 git mergetool Rebase 계속 git rebase --continue 선택한 커밋만 합치기. -n 옵션 stage 상태로. 없으면 commit됨 git...