책책책 책을 읽어요

2부 스프링과 객체지향 설계)스프링 프레임워크는 자바 기반의 오픈소스 애플리케이션이다. 특히 스프링 부트의 등장은 스프링의 사용성을 끌어올렸다. 트랜잭션 스크립트란?레이어드 아키텍처란?서비스는 왜 서비스라고 부를까?서비스는 왜 생성자 주입을 사용해야 할까?모듈이란 뭘까?패키지는 어떻게 구분하는 것이 좋을까? 레이어, 도메인 순서로 구성하는 것이 좋을까, 도메인,레이어 순서로 구성하는 것이 좋을까?애플리케이션의 핵심은 무엇일까, 스프링? JPA?Chapter 6. 안티 패턴스프링 개발자가 많이 저지르는 '구조적 실수'가 있다. 개발엔 정답이 없지만 유지보수나 확장성 관점에서 좋지 못하다 알려진 안티패턴은 존재한다. 6.1 스마트 UI 스마트 UI 패턴은 유명한 안티패턴이다. 스마트 UI는 다음과 같은 코드..
Chapter 5. 순환 참조이 부분은 Chapter4에서도 의존성 전이를 얘기하면서 다루기도 했고, 실제로 Entity 매핑을 하면서도 발생한 문제여서 잘 알고 있었다.그래서 조금은 순환 참조가 뭐인지 정리하기보단.. 해결방안을 위주로 가볍게 작성해 볼 예정이다.JPA를 활용하며 가장 대표적으로 볼 수 있는 순환 참조는 다음과 같은 양방향 매핑이다.@Data@NoArgsConstructor@Entity(name = "team")class TeamEntity { @Id private String id; @OneToMany(mappedBy = "myTeam") // Team -> Member private List members;}@Data@NoArgsConstructor@En..
Chapter 4. SOLIDSOLID는 객체지향에서 좋은 설계와 아키텍처에 빠질 수 없는 개념이다. 2000년대 초반에 고안한 5가지 원칙을 지칭하는 말로, 아래와 같은 원칙을 앞글자만 따서 부른다.단일 책임 원칙 (SRP: Single Responsibility Principle)개방 폐쇄 원칙 (OCP: Open-Closed Principle)리스코프 치환 원칙 (LSP: Liskov Substitution Principle)인터페이스 분리 원칙 (ISP: Interface Segregation Principle)의존성 역전 원칙 (DIP: Dependency Inversion Principle)각 원칙은 객체지향 언어에서 좋은 설계를 얻기 위해 개발자가 지켜야 할 규범과 같다. 또한, 각 원칙의 ..
Chapter 2 이후로는 멈췄었지만, 책은 다 읽었다. 현생에 치이다 보니 이제야 정리를 올린다.책이 정말 좋아서 배운 것도 많기에, 그냥 넘어가면 조만간 까먹을 거 같은 이슈로 꾸역꾸역 정리를 해본다. (내 머리는 RAM이다. 휘발성 메모리..) Chapter 3. 행동객체는 단순한 데이터 덩어리가 아니며 마치 자아를 가진 것처럼 동작해야 한다. 즉, 객체가 데이터로서 존재하는 것이 아니라 '행동'하는 것이 중요하다는 것을 의미한다. 그렇다면 객체 행동해야 한다는 것은 어떤 의미이며, 어떻게 해야 객체를 행동하게 만들 수 있을까? 가장 쉽게 객체를 행동하게 만드는 방법은 TDA 원칙을 적용하는 것이다. TDA 원칙은 객체를 행동하게 만든다. TDA의 묻지 말고 시켜라 라는 말 자체가 객체에 어떤 행동..
Chapter 2. 객체의 종류VO(Value Object)란 어떤 객체인가?DTO(Data Transfer Object)란 어떤 객체인가?DAO(Data Access Objec)란 어떤 객체인가?엔티티(Entity)란 어떤 객체인가? 흔히 검색하면 나오는 개념으로는 다음과 같다.VO는 Value Object로 값 객체라는 뜻이다. 쓰기 작업이 불가한 읽기 전용 객체를 말한다. DTO는 계층 간 데이터 교환에 사용되는 객체이다. 대표적인 예로 DB에 데이터를 넣을 때나 DB에서 데이터를 불러올 때 DTO를 사용한다.DAO는 데이터베이스에 접근하는 데 사용되는 객체이다.엔티티는 JPA @Entity이며, 테이블에 1:1로 대응되고, 각각을 구별할 수 있는 식별자를 가지고 있다. 하지만 결코 충분하지 못하며..
늦은 신년 목표 한 달에 한 권 이상 읽기이다.. 잘 정리해보려 한다 ㅎㅎ1부 객체지향)객체지향 프로그래밍은 현실 세계의 복잡성을 풀어내는 방법 중 하나로, 현재 가장 인기 있는 프로그래밍 패러다임이라 해도 과언이 아니다. 1. 순차지향, 절차지향, 객체지향 프로그래밍이란?2. 객체지향 프로그래밍에서 역할, 책임, 협력을 강조하는 이유가 뭘까?3. VO, DTO, DAO, 엔티티란 뭘까?4. 행동이 강조되는 이유가 뭘까?5. SOLID와 디자인 패던은 어떻게 이해하는 게 좋을까?6. 순환 참조를 피해야 하는 이유가 뭘까? 책의 1부 객체지향을 읽으면 다음과 같은 질문에 대답을 할 수 있을 것이다. (물론 내 글은 Chpter1만 다루고 있다.)Chapter 1. 절차지향과 비교하기자바를 사용하면서도 절차..