본문 바로가기

스프링/MyBatis5

MyBatis 1차 캐시와 2차캐시 MyBatis에서는 1차 캐시와 2차캐시 두가지 레벨의 캐시를 제공한다. 1차 캐시는 공식문서에 잘 나와있지 않아 테스트코드를 통해 한번 확인해 보자.이글에서는 스프링부트 2.7x , java11 환경에서 테스트 함을 미리 알린다. 1차캐시 (Local cache)1차 캐시는 MyBatis 에서 별도의 설정을 하지 않아도 활성화 되어 있다. 1차캐시는 세션 내에서만 유효하고 같은 세션 내에서 동일한 쿼리를 여러번 실행할 경우 데이터 베이스에 다시 접근하지 않고 캐시된 결과를 사용한다.  트랜잭션을 적용한 cacheTest@Test@DisplayName("cacheTest")@Transactionalpublic void cacheTest1(){ Member member = Member.builder(.. 2024. 9. 1.
MyBatis의 Mapper XML 파일 매핑 MyBatis의 Mapper가 지원하는 XML의 기본적인 기능들을 살펴볼것이다. 이 글의 내용은 MyBatis의 공식문서를 기반으로 작성 할 것이며 test코드는 자바11, 스프링 부트2.7 버전에서 테스트를 진행하는 것임을 미리 알린다.이번 설명에서는 select, insert, Result Maps에 대해 다룰 예정이다.resultMap의 디테일한 association 과 collection의 기능은 프로젝트 진행시 적절한 예시와 함께 자세히 설명하겠다.동적 SQL은 다음장에서 보도록 하자.Select먼저 select를 통해 Mapper인터페이스와 Mapper XML이 어떻게 매핑 되는지 살펴볼것이다. MyBatis에서는 SQL 쿼리문을 매퍼 인터페이스와 XML 파일에 정읜 매핑을 통해 실행한다. 이.. 2024. 9. 1.
MyBatis의 Spring에서의 동작원리 프로젝트를 진행하기전 MyBatis가 무엇인지 스프링에서 MyBatis는 어떻게 동작하는지 먼저 짚고 넘어가야 할것 같았다. 이 글에서는 MyBatis의 기본적인 개념과 스프링에서의 동작 원리를 중심으로 다룰 예정이다. 이 외의 다른 ORM프레임워크(JPA등) 은 추후 프로젝트 마이그레이션을 진행하며 비교 글을 작성하도록 하겠다.  MyBatis란 무엇일까?MyBatis란 SQL을 별도의 파일로 분리해서 관리하게 해주며 객체와 SQL 사이의 파라미터 매핑 작업을 자동으로 해주는 프레임 워크이다. MyBatis를 사용하지 않고 JDBC를 사용하게 된다면 데이터베이스를 호출하는 코드마다 DB Connection을 생성해줘야 하고 자바 코드안에 쿼리문을 작성해야 한다. 이로 인해 반복적인 코드가 많아지고 SQ.. 2024. 8. 30.
MyBatis 에서는 누가 DB와 매핑될까? VO? DTO? Entity? JPA는 데이터베이스의 테이블과 자바 객체 Entity를 매핑하여 객체 지향적인 방식으로 데이터를 다룰 수 있게 한다. 하지만 MyBatis는 ORM이 아니기에 Entity개념을 사용하지 않는다. MyBtis는 주로 SQL 쿼리를 직접 작성하고 그 결과를 매핑할 자바 객체를 사용한다. 객체들의 개념에 대해서 한번 알아보자. 1. Entity vs VO 엔티티(Entity)Entity는JPA에서 데이터베이스 테이블에 매핑되는 클래스 이며 고유한 식별자를 가진다.엔티티는 이 고유한 식별자를 통해 객체를 구분한다. 동일한 ID를 가진 두엔티티는 동일한 객체로 간주하는 것이다.예를들어 엔티티의 상태가 변경되어도 ID는 변하지 않으며 이를 통해 동일한 엔티티로 인식된다. 영속성 컨텍스트와 변경감지 VO(Value.. 2024. 8. 28.
스프링부트 2.7.x 버전에서 MyBatis 시작하기 스프링부트 공식 문서를 확인해 보면 상용지원은 25년 2월까지 진행된다고 나와있다. 그렇다면 지금 스프링부트 2.7버전을 사용하고 있는 많은 회사들이 마이그레이션을 진행할텐데 그 과정을 한번 학습해 보고자 프로젝트를 실시 하려 한다. Mybatis Spring boot starter 버전 3 은 스프링부트 2.7 버전과 호환되지 않는다. 따라서 2버전을 사용해야하는데 Maven Repository에서 사람들이 가장 많이 사용한 2.2.2 버전을 선택했다. Mybatis Spring boot starter 2.2.2 버전에는 Mybatis 3.5.9 버전이 포함되어 있었다.   1.MyBatis 테이블 생성JPA를 사용할 때는 @Entity 애너테이션을 통해 엔티티 클래스를 정의하면 Spring Data .. 2024. 8. 28.