JAVA
-
DDD Value Object와 Reference Object 3부JAVA/DDD 2020. 12. 23. 12:28
DDD 이터니티 조용호 님의 블로그를 보고 다시 한번 공부하기 위해서 정리하게 되었습니다! 생명 주기 제어 객체 지향 시스템은 거대한 객체들의 네트워크로 구성되어 있다. 객체는 상호 연결된 객체들간의 협력을 통해 할당된 책임을 완수한다. 일반적으로 한 객체에서 다른 객체로 이동하기 위해 객체 간의 연관 관계를 이용한다. 따라서 특정한 작업을 수행하기 위해서는 얽히고 설킨 수 많은 객체들 중 어떤 객체에서 항해를 시작할 것인지를 결정해야 한다. SQL 쿼리를 통해 어떤 결과 목록에라도 접근이 가능한 관계형 데이터베이스와 달리 객체 지향 시스템은 임의의 결과 목록에 자동으로 접근할 수 있는 메커니즘을 제공하지 않는다. 모든 객체가 메모리 상에 존재한다고 가정하고 객체와 객체 간의 관계를 항해함으로써 목적 객..
-
DDD - Value Object와 Reference Object 2부JAVA/DDD 2020. 12. 22. 16:38
DDD 이터니티 조용호 님의 블로그를 보고 다시 한번 공부하기 위해서 정리하게 되었습니다! 불변성 불변 클래스는 다음과 같은 규칙을 따른다. 객체를 변경하는 메서드(mutator)를(mutator) 제공하지 않는다. 재정의할 수 있는 메서드를 제공하지 않는다. 모든 필드를 final로 만든다. 모든 필드를 private으로 만든다. 가변 객체를 참조하는 필드는 배타적으로 접근해야 한다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 ..
-
DDD - Value Object와 Reference ObjectJAVA/DDD 2020. 12. 21. 14:13
DDD 이터니티 조용호 님의 블로그를 보고 다시 한번 공부하기 위해서 정리하게 되었습니다! 애플리케이션을 구성하는 객체들을 REFERENCE OBJECT와 VALUE OBJECT로 분류할 수 있다. 시스템 내에서 해당 객체를 계속 추적해야 한다던가 객체가 표현하는 개념이 유일하게 하나만 존재해야 하한 다면 REFERENCE OBJECT로 만든다. 단지 객체가 추적할 필요가 없는 단순한 값이라면 속성값이 동일하다면 동일한 객체로 간주해도 무방하다면 고민할 필요 없이 VALUE OBJECT로 만든다. REFERENCE OBJECT와 VALUE OBJECT의 개념은 단순하다. 그러나 추적성의 진정한 의미를 이해하기 위해서는 다양한 문맥 내에서 이들의 차이점을 살펴볼 필요가 있다. 동일함(identical)의 ..
-
JAVA 연산자JAVA/Java 2020. 11. 29. 00:18
산술 연산자 수학에서의 산술 연산자에는 사칙연산이 있다. 더하기, 빼기, 곱하기, 나누기를 의미한다. 그렇다면 컴퓨터는 어떨까? Java는 다섯 가지 연산이 있다. 더하기, 빼기, 곱하기, 몫, 나머지이다. 이때 곱하기, 나누기 부분에 차이가 있고 이에 대해 알아보자. 핵심은 곱하기와 나누기의 연산 방식이 비트를 Shift하며 계산을 한다는 특징이 있다. 몫과 나머지를 구하는데 최적화되어있기 때문이다. 물론 소수 출력의 경우는 변수의 Data Type을 실수형으로 사용하면 부동소수점의 활용으로 가능하다. 더하기는 "+", 빼기는 "-", 곱하기는 "*"로 사용 가능하다. 앞서 말해 나누기가 수학에서의 사칙 연산과는 다른데 나누기에는 두 가지 연산 몫과 나머지 연산이 있고 "/"와 "%"로 보기와 같은 사..
-
Maven에 대해서 알아보자JAVA/Java 2020. 8. 30. 20:29
메이븐 이란? 자바용 프로젝트 빌드, 관리에 사용되는 도구이다. 아파치 앤트(Ant)의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 메이븐의 특징은? 1. 빌드 절차를 간소화하는 빌드 도구이다. 빌드란? 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정, 결과물 ex) 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(. xml,. jpg,. jar,. properties)을 JVM이나 톰캣 같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다. 빌드 도구란? 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램. 빠른 기간 동안 계속해서 늘어나는 라이브러리..
-
서블릿 Life Cycle 알아보기JAVA/Java 2020. 6. 2. 21:45
Servlet 이란? 자바로 웹 애플리케이션을 개발할 수 있는 스펙과 API를 제공한다. 가장 핵심적인 클래스는 HttpServlet이다. 이전 CGI방식에 비해 한 요청을 처리할 때마다 프로세스를 만드는 게 아닌 스레드를 만들어서 처리하고 공유한다. Servlet 컨테이너는 Servlet 스펙에 기반하여 Servlet의 라이프 사이클을 다루게 된다. Servlet Code Servlet에 Lice Cycle을 확인하기 위한 코드를 작성해보자. 1. Init() 메서드는 최초 요청을 서블릿 컨테이너가 받고 그 요청을 처리할 서블릿을 찾았다면 서블릿을 인스턴스로 만들고 나서 최초로 한번 호출한다 2. 해당 요청을 처리하기 위해서 http 메서드에 따라서 doget doPost 등의 메서드들이 호출이 된다...
-
왜 Wrapper 클래스는 쓰이는 걸까?JAVA/Java 2020. 5. 21. 22:46
자바는 기본 타입 ( byte, char, short, int, long , float, double, boolean )의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장 ( Wrapper ) 객체 라고 하는데, 기본 타입의 값을 내부에 두고 포장하기 때문에 포장 객체이다. 포장 클래스는 java.lang 패키지에 포함되고 다음과 같이 기본 타입에 대응되는 클래스들이 있게 된다. 이러한 Wrapper 클래스를 사용하는 이유는 뭘까? 다음과 같이 4가지로 정리해 볼 수 있을 것 같다. 1. 래퍼 클래스는 기본 데이터 타입을 Object로 변환할 수 있다. 메소드에 전달된 인수를 수정하려는 경우 오브젝트가 필요하다. ( 기본 유형은 값에 의한 변경 Object는 참조에 의한 변경이기 때문이다. ) 2...
-
객체의 해시코드(hashCode())란JAVA/Java 2020. 5. 19. 23:05
객체 해시 코드란 객체를 식별할 하나의 정수 값을 말한다. Object는 클래스의 최상위 타입이고 Object의 hashCode() 메서드는 객체의 메모리 번지를 이용해서 해시 코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지게 된다. 논리적 동등 비교 시 이 hashCode()를 오버 라이딩할 필요가 있는데, HashSet, HashMap, Hashtable은 다음과 같은 방법으로 두 객체가 동등한 지 비교한다. ( 논리적으로 동등하다는 것은 같은 객체이건 다른 객체이건 상관없이 객체가 저장하고 있는 데이터가 동일함을 뜻한다. ) 위에 예제를 보면 Key 클래스는 equals() 메서드를 재정의해서 number 필드 값이 같으면 true를 리턴하도록 하였다. 이 경우 HashMap의 식별키로 Ke..