DevBoi

잡다하지만 필요한 기술지식 5 본문

[Computer Science]

잡다하지만 필요한 기술지식 5

HiSmith 2021. 7. 22. 13:38
반응형

DTO, DAO , VO 차이

VO란, Value Object 이며, 비즈니스 값을 가져올때 사용하며, 보통 값을 수정할 수 없는 것으로 간주한다.

DTO와 혼용해서 쓰기도 한다.

 

DTO란, Data Transfer Object 줄임말로, VO와 같이 값을 갖고있는 객체이다.

Vo와 차이점은 DB로 치면 하나의 인스턴스로, 데이터 핸들링에 사용되는 객체이다.

DTO를 통해, 데이터를 전달 할 수 있다.

 

DAO란, 

Data Access Object 의 줄임말로, 실제 Db에 접속하는 객체이다.

Service 와 DB사이에서 가져온 데이터를 엔티티로 변환시켜 가져온다.

대부분은 CRUD API를 제공

 

자바 데이터 타입

1) Primitive type 기본형

변수에 값 자체를 저장, boolean,char,int 등 8가지 stack메모리 영역에 실제 값을 저장하는 데이터 타입

2) Reference type 참조형

기본형 외의 모든 타입니다. String, 인터페이스, 모든 변수는 참조형 변수이다.

새로 만들때 heap 메모리에 저장공간 확보후에 new로 정의한다.

실제 값은 heap 영역에 저장되고, stack에는 메모리 주소만 저장한다.

 

String , StringBuffer, StringBuilder 차이

- String 불면, 문자를 수정하려면 지우고 새로 생성 -> 문자열 연산이 많으면 성능 저하

예를 들어서 String test = "gd" 였는데, test = "as"로바꾸게 되면,

실제 값이 바뀌게 되는것이아니라 인스턴스가 추가되고, 메모리에 올리게된다.

수십번 stack에 메모리가 쌓이게된다. 이 경우 GC가 호출되기 전까지 heap에 지속적으로 쌓이게 되고

메모리 관리 측면에서 치명적이다.

String buffer는 이러한 경우, add랑 remove를 지원해주어서 별도 메모리를 올리지 않고,

char처럼 한글자씩 append를 처리해준다.

 

String Builder 와의 차이는

String BUffer는 멀티쓰레드 환경에서, 적합하고, String Builder 는 동기화를 지원하지 않기때문에,

멀티쓰레드 환경에서는 부적합하나, 싱글쓰레드에서는 Buffer보다는 성능이 좋다.

실무에서는, 안전하게, BUffer를 사용하는것이 좋겠다.

(참고, 고유 객체나 해당 값을 확인하기 위해서는, 단순 value 가 아닌 hashcode에 대한 일치가 되어야 한다.)

 

로컬변수,인스턴스 변수

로컬변수는, 해당 중괄호 안에서만 사용가능

인스턴스 변수는, 해당 class내 다 사용가능

 

추가로, Spring 기본 지식

 

DI - 한 객체에서 다른 객체가 필요하여 의존성을 갖게 하는 기술

DL -  한객체에서 필요로 하는 다른 객체를 찾아서 사용하는 기술

Ioc -  직접 제어야하는 부분에 대한 권한을 프레임워크에 넘기는 기술

Aop -  공통 관심사항을 추출하여, 적용하는 기술 로그나, 메소드 실행시간 등등

 

MVC 란, 

model : 데이터 저장 컴포넌트

View 사용자 인터페이스 컴포넌트

Controller mv를 이어주는 중개컴포넌트이다.

반응형