티스토리 뷰

2022/jpa

day06[jpa, mybatis 연동]

yanii 2022. 12. 1. 11:17

레포지토리가 만들어주는 메소드가 아닌

쿼리메소드로 쓰기엔 너무 길어지거나 불가능할 땐,

쿼리 어노테이션의 JPQL을 사용함.

 

 

mybatis는 영속성 컨텍스트 없음.

mybatis와 jpa같이 사용 가능.

xml에 있는 쿼리를 mapper에서 실행하고 mapper를 사용하면 됨. 끝.

mapper interface를 dao에서 사용함. dao가 jpa에서는 repository로 대체가 된다.

 

커스텀레포지토리 

spring data jpa, 순수 jpa랑 같이 써야 할 때 

jpa랑 mybatis랑 같이 써야 할 때,....

우리가 직접 interface를 따로 만들어서 레포지토리에 상속시켜주는 것임..

 

 

** mybatis 설정

config > MyBatisConfig

application.properties >> hikari 써주기(jpa문제없음)

mapper 패키지(TimeMapper 인터페이스) 복붙

resources >> config.xml, mapper.xml 복붙

 

트랜잭셔널이 동일하면 안되기 때문에 mybatis는 connection테스트는 따로 테스트필요함.

jpa, mybatis 둘다 쓰는 건 되는데, 하나의 서비스에서는 하나만 사용해야 함.

한 군데에서 혼용할 수 없다.

jpa에서 쓰는 connection객체가 따로 있고,

mybatis에서 쓰는 connection객체가 따로 있다.

연결객체를 테스트할 때에는 따로 분리를 해서 테스트해야 함.

실제 쿼리를 날릴 때에는 해당 매퍼에 있는 것을 가져오면 됨.

 

 

mybatis를 쓰려면

(매퍼에서 쿼리쓰고 매퍼인터페이스에서 메소드만들고)

1.customRepository를 만들기

2.구현체 만들기

3.extends하기

extends하면 PetRepository에 PetCustomRepository 주입이 됨.

인터페이스는 다중상속이 가능함.

 

 

테스트할 때 mapper.getTime()이 아니라 petRepository.getTime()으로 사용해야 한다. jpa방식

검증도 가능함.

contains는 하나라도 포함됐을 경우

containsExactly 안에 있는 값이 전부 다 같아야 함.

 


꼭 customRepository를 만들어서 상속을 해줘야 하나?

별도로 해도 됨.

 

따로 레포지토리 만들어서

이렇게 써도 된다.

이렇게 해서 단위테스트에서 PetMyBatisRepository 주입받아서 해도 된다.

'2022 > jpa' 카테고리의 다른 글

day06[queryDSL-2]  (0) 2022.12.01
day06[queryDSL-1]  (0) 2022.12.01
day05[다대일 양방향 관계]  (0) 2022.12.01
day04[다대일관계, N:1]  (0) 2022.11.30
day04[연관관계]  (0) 2022.11.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함