[Spring Boot] DTO vs VO vs Entity
·
개발/Spring Boot
1. DTO (Data Transfer Object) DTO란 데이터 전송 객체이다. 말그대로 데이터를 전송하기 위한 객체로 사용된다. class colorDTO{ private int red; private int blue; private int green; public colorEntity(int red, int blue, int green) { this.red = red; this.blue = blue; this.green = green; } public int getRed() { return red; } public int getBlue() { return blue; } public int getGreen() { return green; } public void setRed(int red) { t..
[정리] DDD 설계 vs SQL중심 설계
·
개발/정리
1. DDD (Domain Driven Design) (1) DDD란? 먼저 도메인이란 소프트웨어로 해결하고자 하는 문제 영역이다. 예를 들면 온라인 쇼핑몰의 도메인은 전자상거래이다. 하위 도메인으로 상품 판매의 이커머스 도메인이 있고 그 하위 도메인으로 상품이라는 도메인이 있다. 이러한 도메인을 중심으로 설계해 나가는 방법을 DDD(도메인 주도 설계)라고 한다. (2) DDD가 왜 필요한가? DDD는 기존 어플리케이션 설계가 도메인에 대한 이해가 부족한 상태로 설계 및 개발 되었다는 반성에서 출발했다. DDD에서는 현실 -> 서비스 로의 일방향 소통구조를 탈피하여 현실 서비스 의 쌍방향 커뮤니케이션을 위해 필요하다. 예를 들면 상품판매의 도메인을 놓고 기획자와 개발자는 다른 생각을 가지고 있을 수 있다..
[Spring Boot] DI 와 IoC는 무엇일까?
·
개발/Spring Boot
스프링에서는 IoC와 DI가 전부라는 말을 들었다. 도데체 IoC와 DI가 얼마나 중요하길래 그럴까 라는 생각을 했다. 1. DI (Dependency Injection) DI는 "의존성" 주입이다. 예를 들어 A는 B에 의존한다라는 말은 A는 B의 상황에 따라 바뀔수도 있다라는 말로 될수도 있다. 의존하기 때문에 B가 바뀌면 A에게도 변화가 올 수 있다는 것이다. class A{ public B makeB(){ B b = new B(); return b; } } 코드로 본다면 위와 같은 예시가 있다. A클래스 안에서 b라는 객체를 만들었다. 그런데 갑자기 B라는 클래스에서 생성자를 수정하여 매개변수가 필요하다면 컴파일 오류가 난다. 이와 같이 B의 상황이 바뀌면서 A까지 영향을 미치는 상황이 의존한다 ..
[정리] Youtube가 가진 기능 도메인으로 정리해보기
·
개발/정리
유투브는 어떤 기능이 존재할까라는 생각을 하며 유튜브 홈페이지를 들어가봤다. 1. 사용자 관점에서 기능 정리 먼저 눈에 보이는건 동영상과 관련된 기능이었다. 1. 동영상 나열 2. 쇼츠 동영상 나열 3. 동영상 미리보기 4. 동영상 검색 5. 카테고리 선택 6. 구독한 채널 동영상 보기 그다음 눈에 들어온건 로그인 관련 기능이다. 1. 로그인, 로그아웃 2. 알람 3. 동영상 만들기 4. 보관함 5. 시청기록 6. 내 동영상 그 다음 하나의 동영상을 클릭하여 들어가봤다. 1. 일시정지 2. 영상 구간 선택 3. 구독 4. 좋아요, 싫어요 5. 신고 6. 클립만들기 7. 댓글 달기 8. 댓글 좋아요 9. 대댓글 10. 다른 동영상 보기 11. 날짜 표시 12. 조회수 표시 설정도 들어가봤다. 1. 멤버십 ..
[Java] @Override 꼭 적어야 하나?
·
개발/JAVA
정해진 인터페이스를 구현하는 경우 인터페이스가 가진 메소드들은 꼭 @Override 를 적어 재정의를 해줘야 한다. 이처럼 Override는 재정의를 위해 덮어쓴다는 표현이다. 그렇다면 구현이 아닌 확장의 경우도 꼭 적어야 할까라는 생각이 든다. extends(확장)의 경우 부모가 가진 메소드를 굳이 재정의 해주지 않아도 사용할 수 있다. 하지만 부모가 가진 메소드를 내 입맛대로 바꾸면서 재정의를 하려고 한다면 @Override를 적어줘야 한다. 아래와 같이 똑같은 코드인데 @Override가 있고 없음에 따라 결과가 달라질 수 있다. class Hi { public void say() { System.out.println("안녕"); } } class Bye extends Hi { public void..
[Java] 인터페이스가 가진 객체지향의 특징
·
개발/JAVA
인터페이스는 객체지향의 특징 중 추상화, 다형성, 상속성의 특징을 가지고 있다. 1. 추상화 인터페이스는 미리 기능들을 정의하여 다른 객체에서 구현을 통해 정의된 기능들을 가져다 쓴다. 사람과 원숭이가 가지는 공통적인 숨쉬기, 걷기 등과 같은 공통적인 기능들을 인터페이스에 미리 정의하여 쓸 수 있기때문에 추상화의 특징을 가진다. 2. 다형성 하나의 인터페이스로 여러 자식들을 가질 수 있다는 점에서 다형성의 특징도 가지고 있다. 3. 상속성 객체지향의 특징 중 상속성같은 경우에는 속성과 기능을 부모로부터 물려받을 수 있다. 인터페이스를 구현한 구현체도 인터페이스가 가진 속성과 기능을 사용하기 때문에 결국엔 인터페이스를 물려받는것이라고 할 수 있다. 그래서 상속성까지 가지고 있는 것이다. 4. 캡슐화 인터페..