클린코더스 - 백명석님 강의를 보고 작성한 글입니다.
Data Structure
Class | Data Structure |
---|---|
private 변수들 + 이를 다루는 함수들 | public 변수들 + Getter/Setter |
cohesive groups of variables를 조작하는 메소드 | 개별 변수들을 조작(Getter/Setter) |
구현을 hide, abstract | 구현을 노출 |
Tell 가능 | Tell불가, Ask만 가능 |
- Data Structure는 Class와 반대되는 개념으로 볼 수 있다.
- DS는 기능의 추가에 대해서 자유롭다. 하지만 타입의 추가에 대해서는 취약함. OOP는 타입추가에 대해서 자유롭다.
Impedance Mismatch
OOP에서 RDB를 사용할 때 발생하는 일련의 개념적/기술적 어려움
- 특히 객체나 클래스의 정의가 데이터베이스 테이블이나 관계스키마에 직접 매핑될 때 발생
DB 테이블은 DS이다.
- data를 노출하고, 메소드는 없다.
- 테이블은 너무 concrete해서 polymorphic(다형화)할 수 없다.
- DB는 어떠한 객체도 포함 할 수 없다.
ORM
- Hibernate
- 진정한 Object-Relational Mapper는 아니다.
- DB row와 객체간의 직접적인 매핑이 없기 때문
- Hibernate는 DB의 DS를 메모리의 DS로 매핑한다.