The Debugging Chronicles : "코드의 미학"

[Mybatis] sql-map-config.xml과 board-mapping.xml 본문

Mybatis

[Mybatis] sql-map-config.xml과 board-mapping.xml

sweetseonah1004 2024. 11. 5. 16:06

**ORM 플러그인

; DB 로직 파트를 자동화 시키려는 목적으로 설정을 추가함

- 코드 모음집 ==  플러그인

- Object Relational Mapping

- (객체 지향 프로그래밍) <-> 관계형 데이터베이스 관리 시스템 

- 객체 (DTO ,VO)           <-> 테이블,SQL 구문 및 그 결과


"마이바티스" 라는 프레임워크를 이 프로젝트에 추가 시킨 상황이다.

또 다른 일하는 주체를 들여왔기 때문에 마이바티스를 위한 설정 파일이 필요하다.

 

"sql-map-config.xml" 이 추가 되어야한다

 

로직 자동화를 위해 추가한 것이다.


추가해야하는 곳 위치!

 설정 파일로 만들어야한다.

applicationContext.xml 과 같은 라인에 있어야 한다.

configuration 이라는 루트 엘리먼트 안에, 가장 최상이 요소 안에 두가지 설정이 있다.

자료형의 이름을 정하는 설정

mapper 설정 알려주는 설정이 들어가있다.

 


 

좀 더 자세히 살펴보자

BoardDTO를 board로 별칭 짓겠다는 이야기이다.

ORM에서는 board라고 부르겠다는 뜻이다.

 

이와 같은 것이 RowMapper이다.

rowMapper에서는 ResultSet이 BoardDTO에 들어가어야해라는 뜻이다

 


mappers 안에는 mapper들이 들어가야한다.

 Board 맵핑은 board-mapping.xml에

member 맵핑은 member-mapping.xml에 연결되어야한다.

 

어떤 SQL구문이 어디에 들어가있는지 알려주는 것이다.

 

BoardDAO(자바)에서 완전히 빠져나와서 

board-mapping.xml으로 분리된다.

 

JAVA 코드에서 제거한 SQL 구문들이 xxx.xml 파일에 있다라는 뜻이다.

 

 

이렇게 분리된 파일은 

결합도가 낮아지고 응집도가 높아지고 유지보수가 용이해진다.

 

  만들때는 

 

MyBatis Xml Mapper로 만든다.

 


 

자바에서는 파라미터를 받기 위해서 ? 를 사용하는데

 

XML에서는 

O

ORM 마이바티스에서 파라미터를 받기 위해 #{} 을 사용한다.

안에는 객체 이름,  멤버변수 이름을 써주면 된다.

 

근데 이 파라미터가 어떤 객체꺼인지 알아야한다.

그래서 resultType 이라는게 필요한데

근데 원래는 이렇게 써야한다.

 

그래서 별칭 설정을 해준다.

별칭 설정은 필수는 아니지만

가독성을 높일 수 있다.

 

ResultType은 결과 가 나오는 SQL문에 올리고

필요가 없는 SQL문은, 즉 결과값이 1,0인 경우에는 쓰지 않아도 된다.

 

 

모든 태그들은 ID라는 것을 갖는데

이 id는 SQL 문의 이름이었다.

 


다음으로 알아야할 것은 namesapce이다.

 

메모리칸에 이름을 정하는 행위이다.

 

 

xml 파일에 이름을 정해주는 행위이다.

 

만약에 이름이 정해져있지 않다면 

다른 xml과 구분 짓을 수 없다.