티스토리 뷰
POJO |
POJO(Plain Old Java Object)란 평범한 자바 객체라는 의미이다.
이게 무슨 뜻이냐면, 어떤 자바 객체가 있는데, 이 객체를 사용하기 위해서 상속을 받아야 한다거나, 인터페이스를 구현해야 한다거나, 어노테이션을 적용해야 한다거나 하는 제약조건이 없는 객체라는 뜻이다.
한마디로 정의하면 POJO란 프레임워크를 사용하기 위해서 해야만 하는 어떤 제약이 없는 평범한 자바 객체이다.
-- 쉽게 따라하는 자바 웹 개발 중 --
POJO라는 용어는 평범한 자바 객체라는 뜻인데 어떤 객체를 평범하다고 지칭하는지
그리고 POJO를 사용해서 개발하는게 왜 중요한지 설명 한다.
먼저 평범하다고 말하는 객체는 다음과 같은 특징.
POJO가 아닌 대표적인 객체
public HelloServlet extends HttpServlet{ ... }
자바 서블릿 코드를 작성할 때는 이렇게 반드시 HttpServlet을 상속바아야 한다.
서블릿 프로그래밍을 한다는 이유로 객체지향 프로그래밍의 핵심적인 기능 중 하나인 상속을 빼앗긴 것이나 마찬가지이다.
-> 자바는 다중 상속을 지원하지 않기 때문에, 하나의 클래스를 상속받으면 다른 것은 상속받을수 없다.
코드를 작성하고 있는 개발자가 직접 상속을 사용할 수 있는 기회가 없어졌으니..
그리고 extends HttpServlet이 추가되면서 이 코드를 이해하기 어려워 진다.
HttpServlet에서 어떤 기능을 제공하는지 어떤 코드를 어떻게 재사용해야 할지 판단하기도 어렵다.
POJO는 그러한 제약이 없는 일반적인 객체를 말한다.
상속이나 인터페이스 구현을 사용하지 않은 객체를 말하는 것이 아니라, 그런 것을 라이브러리나 프레임워크로부터 강제받지 않는 객체라는 것이다.
public HelloController { .... }
이런 클래스라면 개발자의 선택에 따라 자신이 만든 다른 Controller클래스를 상속받게 하거나 인터페이스를 구현하게 할 수 있다. 또한 이해하기 쉬운 코드이기도 하다. 무엇보다도 이런 객체가 테스트를 작성하기 편하다. 테스트를 작성하기 쉬운 코드가 곧 좋은 코드이다.
POJO는 자바 표준 스펙이 아니다.
DTO |
VO |
|
DTO와 VO는 거의 유사한 개념인데, 계층간 데이터 공유를 위한 자바 빈즈라는점에서 유사하다.
VO의 두 객체가 같다고 판단하기 위해서는 그 객체가 같은 클래스로 부터 나왔다 하더라도 그 내부의 값이 다르면 두 객체는 같다고 판단되지 않는다.(아래에 예가 있음)
하지만 DTO는 내부의 값이 다르더라도 같은 클래스로 부터 나온 객체라면 두 객체가 서로 같다고 판단 된다.
DAO |
실제 객체는 멤버 변수와 멤버 메소드로 구성 되어 있다. 이것은, 하나의 객체가 데이터의 저장과 그 데이터 사용을 동시에 한다는것인데, 웹개발에서는 데이터 저장용도의 객체와 데이터 사용 용도의 객체가 따로 분리되어 있다. 각각 DTO,DAO라고 불린다.
개인적으로 공부하면서 적은 내용이기 때문에 오류가 있을 수 있습니다.
잘못된 내용을 발견하시면 댓글로 달아주시면 감사하겠습니다.
'컴퓨터 공학과 졸업 > 기본 개념' 카테고리의 다른 글
DBCP (0) | 2018.02.14 |
---|---|
JNDI (0) | 2018.02.14 |
GET방식과 POST방식 (1) | 2018.01.26 |
자바 빈즈란? (0) | 2018.01.21 |
서블릿,서블릿컨테이너,톰캣,인터셉터,필터 (0) | 2017.08.11 |
- Total
- Today
- Yesterday
- react
- react hooks
- return type
- design system
- Babel
- props
- Next.js
- reactdom
- await
- promise
- atomic design
- rendering scope
- state
- async
- typescript
- useEffect
- webpack
- reflow
- type alias
- storybook
- es6
- server side rendering
- useRef
- Polyfill
- Action
- hydrate
- computed
- reducer
- javascript
- mobx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |