본문 바로가기
반응형

상속4

[엘레강트 오브젝트] 4.3 final이거나 abstract이거나 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 상속의 문제점 final이나 abstract 정리 상속의 문제점 상속의 가장 큰 문제는 객체들의 관계를 너무 복잡하게 만든다는 것이다. class Document { public int length() { return this.content().length(); } public byte[] content() { // 문서의 내용을 바이트 배열로 로드한다. } }class EncryptedDocument extends Document { @Override public byte[] content() { // 문서를 로드해서, 즉시 복호화하고, 복호화한 내용을 반환한다. } } EncryptedDocument 클래스의 content().. 2023. 4. 9.
[아이템18] 상속보다는 컴포지션을 사용하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아닙니다. 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 됩니다. 상위 클래스와 하위 클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법입니다. 상속의 문제점 메소드 호출과 달리 상속은 캡슐화를 깨뜨리게 됩니다. 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있습니다. public class InstrumentedHashSet extends HashSet { // 추가된 원소의 수 private int addCount = 0; public InstrumentedHashSet() { .. 2022. 9. 18.
[JPA] 상속 전략 정리 JPA에서 상속 관계 전략을 세우는 방법 정리 자바에서 상속의 대해서는 많이 접해보았지만 최근 JPA를 통해서 상속에 대해서 어떻게 대응을 해야되는지 공부를 하다가 관련 내용을 정리하려고 합니다. 자바 ORM 표준 JPA 프로그래밍에서는 다음과 같이 설명을 하고 있습니다. 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 그렇다면 객체의 상속 관계 매핑을 위해서 어떻게 해야 할까요? 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현하기 위해서는 3가지 방법을 선택할 수 .. 2022. 2. 6.
[JPA] JPA와 Mybatis 비교 개발자로서 일을 시작하면서 Mybatis의 사용은 거의 80 ~ 90%였습니다. 왜냐하면 어느 프로젝트에서든지 쉽게 접할 수 있었습니다. 그러다보니 어느 프로젝트를 진행하든 Mybatis라는 프레임워크를 만났기 때문에 어렵지 않게 진행할 수 있어서 사실 반가웠습니다. 그래서 JPA는 미지의 영역이었습니다. 그리고 시간이 흘러서 프로젝트를 새롭게 진행하면서 JPA를 접하게 되었습니다. 그때까지만 해도 JPA를 이렇게 알고 있었습니다. Database의 제약없이 변경되도 사용할 수 있다는 것 그러다 이러한 생각이 들었습니다. 단순히 위 기능때문에 그 많은 서비스 기업에서 JPA를 사용하는 것일까? 그리고 나는 개발자로서 Java의 기능을 맞게 사용하고 있는것인가? 라는 생각이 들었고 좋은 기회로 우아한 테크.. 2022. 1. 23.
반응형