https://okky.kr/questions/543609
OKKY - 자바 Map vs VO 어떤게 더 효율적일까요?안녕하세요. 1년차 신입 개발자입니다.지금 진행중인 프로젝트에서 VO와 MAP을 각 개인 취향따라? 사용하고 있는데저는 입사전에는 VO을 사용했다가 실무에서 MAP을 사용해보며 원하는 파라메터 값을GETTER, SETTER 만들지 않아도 추가할 수 있는게 너무 편하여 MAP을 사용하는데선배님들의 생각이 궁금합니다. 구글링 검색을 해봐도 어떤게 더 좋다고okky.krhttps://okky.kr/articles/370609
호랑이를 잡으려면 호랑이 굴에 가야한다고... Okky 를 가봤다
주로 신입들이 글을 쓰고 고인물들이 대답을 한다
잠깐 자바맨들에게 VO, Map 의 차이
VO 는 클래스로 데이터 타입을 지정할수 있다
Map은 "문자열키" 로 지정하고 Map 으로하면 맘대로 키를 추가, 삭제하면서 사용중이다
무슨속성이 들어오고 나갈지 모른다고 한다.
댓글의 일부만 가져와봤다
----
웹 개발자로써 저는 모두다 map 형태로 사용하고있습니다.
데이터야 브라우저에서 console 창으로 데이터를 확인하기에 데이터 확인도 편하구요.
또 DB 칼럼이 추가 삭제되는경우가 개발하다보면 자주 발생합니다. 추가의 경우코드상으로 영향이 있을경우 DTO의 property도 추가되야 되며 각각 get, set이 발생하는 모든곳에 명시를 해줘야하죠..
------------
map이냐 dto냐는 정말 케케묵을 정도로 오래된 논쟁이 있었는데... ㅎㅎ
선임분에게 슬쩍 물어보세요. 선임분도 이전부터 이렇게 개발되어 왔기 때문에 이것들을 치울 수가 없어서 그대로 놔둔 것일지도
----------
협업자가 많을수록 vo를 선언하고, 로직이 복잡할수록 vo를 선호합니다.
전체적인 비즈니스로직이 단순한경우, 그리고 개발자 수가 적어서 의사소통에 지장이 없다면 고민없이 맵씁니다.
꼭해야한다면 커스텀 벨리데이터 만들어서 쓰기도 합니다. 벨리데이션 필요한 키값 스트링과 필요한 벨리데이션 코드를 저장한 맵을 별도관리하는 식으루요.
말그대로 단순 조회 저장등만 가질 경우에는 컨트롤러 벨리데이션으로 충분해서 굳이 vo안가도 큰 문제 없습니다.
------------
토비의 스프링 프레임워크 후반부에 보면 나오는
일명 데이터/DB중심 아키텍처 (?)라고 부르는 방식이고 현 국내의 SI의 많은 부분에서 사용되는 것으로 알고 있습니다.
자연스레 객체지향적이지 않게 흘러가는 경향이 높아지겠지요.
개발이라는게 혼자서 하는게 아니다보니 개발 문화가 저렇다면 아마도 선임한테 따진다 한들 어쩔수 없을겁니다. 아마도 그런 환경이 마음에 들지 않는다면 퇴사해서 다른 곳을 찾을 수 밖에 없을듯 합니다.
---------------
저는 개인적으로 vo 선호하지 않아서 최근 몇년간 vo 사용 안해본 것 같네요 우연인지..ㅎ
질문1에서 파라미터 매핑할때 필요시마다 vo 생성하면 비효율적이지 않나요?
보통 그런경우네는 1번이나 3번 형태로 할 듯 합니다.
질문2는 프로젝트 마다 다르겠지만 2번 3번 형태를 많이 본 듯 합니다.
-------- VO 안쓰고 맵 쓰는 유형 요약
1. DB 나 스펙이변경되는데 DTO 변경 귀찮아서 Map 을 쓴다 <-- 이럴때 쓰라고 동적유형언어있는거 아님? 파이썬,php 등
2. 선임이나 개발문화, 이미그런 코드가 많아서 그냥 따라 쓴다. <-- 참 할말이 없네~
3. 개인적인 선호로 Map 쓴다 <-- 동적언어랑 맞는데 자바 일자리 많아서 그냥 자바 쓰시는듯
4. 플젝이 CRUD 로 단순해서 쓴다. <-- 음 그렇군..
오늘의 궁금증 해결 완.
이 글보고 c#버리고 python 간다
그냥 java 자체가 좆병신언어인거임 json 다루기엔
궁금한게 우리나라 네카라쿠배 이런 메이저 회사들도 Map 쳐바르냐?
아닐껄?... 서비스다니는 사람들이 si 코드 경악한다는거보면 아니겠지
이 글보고 모든 자바 프로젝트 코틀린으로 바꾸고왔다
2번은 규모 큰 곳이면 맞는 말임 ㅇㅇ 니가 100명 넘는 개발자 전부 교육 시키고, 코드 리뷰 해줄 거야? 아니면 그냥 따르는 게 맞음ㅇㅇ 그래도 바꾸고 싶음? 그럼 우선 아키텍처 회의에 들어갈 직책과 권한이 있는지부터 확인하자 없으면 그냥 따르는 게 맞음ㅇㅇ