요즘 최범균님의 DDD start! 라는 책을 보며 DDD(Domain Driven Design)에 대해 입문하고있다. 책을 보며 공부한 내용을 정리하는 포스팅이다. 아마 이번 포스팅은 얼마전 작성한 DTO와 VO 포스팅과 유사한 내용이 상당히 많을 것 같다. 얼마전 잡은 개념이라 책보면서 이해하기에도 어려운부분이 없어서 다행이었다. 1. Domain 개발을 하다보면 도메인이라는 단어를 참 많이 듣게된다. 특히 '도메인 객체' 란 표현으로 접하게되는데 도메인 객체란 내가 개발하고자 하는 영역을 분석하고, 그 분석의 결과로 도출된 객체들을 일컫는다. 예를들어 쇼핑몰을 만든다고 하자. 쇼핑몰의 주된 기능은 상품 구매일것이다. 상품구매의 순서는 보통 이렇다. * 상품을 등록한다. * 회원이 상품을 구매한다. ..
코드를 짜다보면 복잡한 분기문이 필요할때가 있다. 복잡한 분기문을 좋아하는 개발자는 없지만 복잡한 비즈니스로직을 요구한쪽이 문제라고 생각하며 자신의 코드를 용서하는경우가 많게된다. 하지만 각종 조건들로인해 분기문이 많아지고 그 깊이가 깊어지면 추후 다른 동료 개발자는 물론이고, 그 코드를 직접 상대한 스스로조차 이해하기 힘들정도의 코드가 탄생하게된다. 이번 포스팅에서는 대단한 기법이나 어려운 기법은 아니지만 소소하게 좀 더 이해하기 쉬운 분기문을 작성하는법을 알아보자. 코드는 자바로 작성되지만 분기문은 자바에만 존재하는 개념은 아니므로 이해하기 어렵진 않을것이다. 1. 불필요한 else 문이런 코드는 실제로 쉽게 만날 수 있다. private static boolean isSenior(int age){ ..
처음 자바를 배울때 인터페이스, 추상클래스, 구현클래스에 대해서 각각 이렇게 배우고, 암기하게된다. * 인터페이스 : 메서드의 몸통을 가질 수 없음. 추상메서드와 상수만 보유가능.* 추상클래스 : 구현메서드와 추상메서드를 모두 가질 수 있음. 단독으로 객체생성 불가능.* 구현클래스 : 구현메서드만 가질 수 있음. 인터페이스를 구현하거나 추상클래스를 상속받은 경우 해당 추상메서드를 반드시 구현해야 함. 자바를 처음 배울때는 보통 추상 클래스 혹은 구현 클래스를 이용해 중복 코드를 상위 클래스로 뽑아내고 하위 클래스들에서 재사용하는것에 큰 매력을 느끼게되고, 구현부따위없는 인터페이스에는 그다지 매력을 못느끼는 경우가 많다. 코드를 재사용할 수 있는것도 아니고 그저 메서드 시그니처만 강제하는게 무슨 의미가있다..
자바를 처음 공부할때 각종 자바의 장점들에 대해 배우는데 그 중 하나는 자바는 메모리 관리를 할 필요가 없다 라는 것이다. 그 이유는 GC때문인데, 'GC가 관리해주니 메모리를 관리할 필요가 없다' 라는것만 배우고 GC에 대해서는 이해도가 높지않은 경우가 많다. 하지만 GC에 대해서도 어느정도는 알고있어야 내 코드에서 성능 문제가 발생했을때 트러블슈팅을 할 수 있을것이다. GC에 대해 간략하게 정리해본다. 1. JVM 메모리구조 JVM 메모리구조를 간략히 도식화한 것이다. static 영역은 정적으로 로딩되는 데이터들이 들어가게되고 JVM의 모든 스레드들이 공유하게된다. stack 영역은 스레드별로 할당되는 영역이다. 쉽게말해 메서드의 지역변수들이 stack에 선언된다고 보면된다. 스레드별로 할당되기때문..
MVC 구조로 개발을 하게되면 공통적으로 생성되는 자바파일들이 있다.Controller, Service, DAO, DTO가 그것인데 여기서 DTO는 VO라는 명칭으로도 많이 사용된다.같은 뜻이라면 애초에 2가지 용어가 존재하지 않을텐데, 이 두 용어의 차이를 포스팅하고자한다. 1. DTO(Data Transfer Object)Data Transfer Object 의 약자로 레이어를 이동할때 데이터를 들고있는 객체를 말한다. 객체지향적인 요소는 없이 단순히 데이터만 들고 이동시키기때문에 필드를 public 접근제어자를 사용해 직접 접근하도록 하는 경우도 있다. 자바에서는 뭔가를 하려면 일단 객체를 만들어야되니 객체화해서 사용할뿐 실질적으로 객체지향이라는 거리가 있는 객체.DTO와 VO의 혼용은 사실상 DT..
- Total
- Today
- Yesterday
- db
- TEST
- frontend개발환경
- OOP
- java
- Jackson
- programming
- code
- Design Pattern
- generics
- spring cloud
- 정규표현식
- Kotlin
- JavaScript Core
- http
- java8
- clean code
- DesignPattern
- javascript
- Git
- frontcode
- servlet
- MySQL
- toby
- JPA
- Spring
- mariadb
- backend개발환경
- EffectiveJava
- go-core
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |