Java&Spring

오늘의 삽질! - spring boot 에서 JPA + Mybatis 붙이기

ZZJJing 2020. 5. 17. 17:54

SpringBoot를 공부하고 있고.

공부하다가 JPA를 공부해야한다고 누가 옆에서 말해서 

JPA를 했는데, 긴 쿼리문을 날리기가 너무 힘들어서 늘 쓰던 Mybatis를 붙이기로 했다. 

 

하지만 아직 개념이 제대로 정착이 안된 나는 조금 여기저기서 도움을 받아야했닷

이게 제대로 된 게 맞는지는 모르겠지만 여튼 select 타고 리스트 끌어오니깐 된 듯! ㅋㅋ 

 

도움 받은 블로그 

https://blog.jiniworld.me/55

 

[Spring Boot] JPA와 MyBatis 동시에 사용하기

Mapper(MyBatis)와 JPA를 함께 사용해야하는 이유? Mapper 작성 및 sqlSessionFactory Bean 생성 2-1) 패키지 구조 2-2) Mapper 인터페이스 작성 2-3) SQL Map XML 작성 2-4) sqlSessionFactory Bean 생성 Plus ti..

blog.jiniworld.me

여기서는 개념을 얻었다! 핵이득!

 

JPA 이용시 아래의 과정 
controller -> service -> repository(JpaRepository 상속 인터페이스)

Mapper 이용은 아래의 과정을거침 
controller -> service -> mapper(인터페이스) -> xml(SQL Map XML)

 

 

jason-moon.tistory.com/127?category=255986

 

Spring Boot에 MyBatis 설정 하기.

Spring Boot(http://projects.spring.io/spring-boot/)에 MyBatis(http://blog.mybatis.org/)를 설정하려면 어떻게 해야할까? 스프링(http://spring.io/)은 계속해서 발전하였고, 지루한 설정의 반복을 없애주는..

jason-moon.tistory.com

여기서는 실질적으로 붙이는데 많은 도움을 받았음

 

일단  

DB랑 MyBatis를 이어주는건 sqlSessionFactoryBean 이라는 녀석(객체라고함)이다. 

그리고 어디어디 보다가 본 건데 SpringBoot는 원래 Mybatis를 지원안한다고한다. 

근데 Mybatis가 지원을 한다고.. ㅋ 이런건 다들 어떻게 아시는거지...?ㅎㅎ 

 


 1. pom.xml 에 마이바티스를 설정해줘야한다. 

최신자료가 약간 없어서.. https://mvnrepository.com 에서 mybatis를 검색해서 일단 다운로드 수가 제일 많은걸 .. 다운받았다. 되기만하면되지뭐.. ㅋㅋㅋ ㅠ.ㅠ  

 

<!-- mybatis 추가 / 제일 다운로드가 많은걸로 다운받음. - https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.2</version>
</dependency>

 

- 그전에 필요한 lombok 이나 서버에따라서 mysql이던지 이런거는 추가되어있어야한다. 

- 나는 귀찮아서 그냥 H2 데이터베이스로 실험했기 때문에 lombok만 추가함

 

2. 당연히 되어있겠지만 

application.properties 나 yaml 파일에 DB 정보 들어가 있어야함!

 

spring.datasource.jdbc-url=jdbc:mysql://{url}:{port}/[db}
spring.datasource.username=root 
spring.datasource.password=1234

 

나는 걍 h2 DB써서 이걸로 했다. 

 

spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:navin

 

- 그리고 또 어디서 봤는데 

spring boot 2.0 이후부터 기본적으로 사용되는 커넥션 풀이 HikariCP로 변경 되었다고한다. 
커넥션 풀 종류중 성능이 좋다고 한다. 

--> 이거 다음에 검색해봐야지!.. 

 

3. 그 다음에 아까 말한 sqlSessionFactoryBean을 만들어주기위해서 

config 폴더에 

참조 블로그에서 온거 타자로 열시미 쳐서 (쳐보면서 해야 그나마 조금 이해가 감..) 

MybatisConfig.java 를 만들었다. 

 

 

 

 

중간에 dataSource를 찍어봤다. 

[데이타 소스가 있긴한걸까????? 함 찍어보기 HikariDataSource (HikariPool-1) ] 

이렇게 이쁘게 찍혔다. HikariPool.. 나중에 공부해야지... ^^;;

 

요러케 필요한 빈을 생성한 다음에! 

 

4. mapper 패키지를 하나 만들고 인터페이스를 하나 만들어서 

 

 

 

* 어노테이션 아직도 잘 모르겠어서 ㅠㅠ 일단 다 넣어봤다. 

 

 

그리구 

mapper.xml 파일도 하나 만들었다. 

 

 

 

resultType 전에 java.utill.List 이런거로 막했던것 같은데 ㅋㅋ Map으로 안하면 에러났음 ㅠㅠ

 

 

5. 컨트롤러와 뷰단을 만들어줬다. 

기존 controller 파일은 JPA 막 함수쓰느라 더러워서 다른거 하나더 만듬 

 

 

 

 

JPA 로 객체 Alien에 이쁘게 받아와서 똑같은 코드로 작성했는데 

글이 나오지 않아서 

출력을 해보니 

 

JPA 통해서 들어오는건 

[Alien(aid=101, aname=Navin, title=Java, content=brrrrrrr, writeDay=2020-04-04, readCnt=0), ····

이렇게 이쁘게 객체랑 / 객체변수 명으로 들어오는데.. 

 

MyBatis로 들어오는건 

[{READCNT=0, TITLE=Java, CONTENT=brrrrrrr, AID=101, NAME=Navin, WRITE=2020-04-04},  ····
그냥 DB 컬럼명 그대로 투박하게 들어왔다. 

 

{} [] () 괄호도 다르고.. 뭔가 형태가 다르게 넘어오는것 같다. 

추가로 공부해야겠다. ;;;;;; 공부할게 넘 많네.. 

그래도 일단은 나오는것으로 만족.!

 

 

 


 이만 오늘 복습끝! :)