일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- git
- Spring Boot
- 파이썬 파일 수정
- 정렬
- python pwd
- 깃
- HTML
- 파이썬
- Javascript
- js
- JAVA ERROR
- Algorithm
- SQL
- 파이썬 파일편집
- 깃허브
- commit
- spring
- DML
- pull
- Python
- sort
- 파이썬 파일생성
- 스프링
- nodejs
- Push
- java 상속
- 자바
- github
- java
- DDL
- Today
- Total
춘식이를 좋아하는 개발자
[Spring] Mybatis에서 Data 가져올 때 VO 와 Map 의 차이점 본문
Spring 개발 및 DB의 데이터를 불러와야 하는 경우 Mybatis에서 data를 가져올 때 어떤 형식으로 가져와야 할까?
당연히 VO? 많이 사용하기 때문에?
Map? "map" 만 적으면 column명, data가 자동으로 쉽게 가져와져서?
VO Class
VO class에서는 필드변수를 private로 지정해 getter/setter 함수를 이용해 main, service 등에서 사용할 수 있다.
다음과 같은 방법으로 VO class를 사용해 DB의 컬럼(column)과 값을 정의할 수 있다.
class UserVO{
private String name
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
Map
Map을 이용하면 VO class에서 필드변수를 지정하고 set함수를 통해 변수 값을 지정해준 것과 같이
key, value 값을 이용해 정의할 수 있다.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UseMap{
public static void main(String[] args) {
// VO 사용해 List를 만들어보자!
List<UserVO> listVO = new ArrayList<UserVO>();
UserVO vo1 = new UserVO();
vo1.setName("알파카");
listVO.add(vo1);
system.out.println(listVO.get(0).getName());
// 알파카 출력!
// Map을 사용해 VO와 동일하게 List를 만들어보자!
List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("name","알파카");
listMap.add(map1)
system.out.println(listMap.get(0));
// name = 알파카 출력!
// HashMap 같은 경우 data가 바로 출력해도 Json 형식으로 출력된다!
}
}
위와 같이 Map을 이용해 VO와 동일한 결과를 가져올 수 있다.
Json 형식으로 바로 출력이 가능하다는 장점도!
장 단 점
VO 와 Map 둘 모두 장단점이 존재한다.
VO
필드변수를 하나하나 지정해주어야한다. 그만큼 변수, JOIN이 많아지거나 컬럼이 많아질 수록 코딩시간이 길어진다.
하지만 컬럼 및 리턴타입(return type)을 파악하기 좋은 장점이 있다! (유지보수에 유리!)
Map
Mybatis에서 자동으로 Mapping이 되기 때문에 쿼리(Query)만 잘 작성하면 쉽게 DB를 받아올 수 있다.
하지만 리턴타입이나 데이터 구조를 확인하는데에 있어 한번 출력을 해봐야 알 수있어 파악이 어려운 단점이 있다.
회사마다 다른 방법을 사용하고 있고, 어떤 방법을 사용해 Mybatis에서 DB를 불러오고 Mapping 하느냐에 따라 장단점이 존재하기 때문에 모두 알아두고 한 번씩 사용해 보는 것이 좋다!
'Study > Java' 카테고리의 다른 글
[JAVA] for문과 for-each문의 차이점 (0) | 2022.06.08 |
---|---|
[Spring] Failed to determine a suitable driver class 에러가 발생할 때 (0) | 2022.06.07 |
[JAVA] 이클립스 북마크(책갈피)하기 (꿀팁!) (1) | 2022.05.11 |
[JAVA] 인터페이스(Interface) & 추상화 / 다중 상속 (0) | 2022.05.11 |
[JAVA] 상속이란? (0) | 2022.05.11 |