본문 바로가기

분류 전체보기278

일급 컬렉션이라는 용어에 대해서 일급 컬렉션이란 하나의 컬렉션 객체를 래핑하고 관련된 동작과 연산들을 정의해 놓은 객체를 말한다. 일급 컬렉션 사용은 ≪소트웍스 앤솔러지: 소프트웨어 기술과 혁신에 관한 에세이》의 객체지향 생활체조에서 언급된 이후 많은 자바 개발자 사이에서 인용되는 원칙 중 하나이다. 일급 컬렉션을 사용 및 권장하는 이유는 다음과 같다. 도메인에 특화된 자료 구조를 만들고 이름을 붙일 수 있다 자바에서는 컬렉션에 새로운 메서드를 추가할 수 없으므로 컬렉션을 래핑하는 방법을 사용해서 관련된 동작이나 연산을 정의하는 메서드를 추가할 수 있다. 래핑하는 객체에는 이름을 붙일 수 있으므로 해당 컬렉션에 대한 이름을 사용할 수 있게 된다. public class CustomerAccounts { private final List.. 2023. 12. 14.
도메인 모델, 엔티티, DTO, VO 차이 정리 각 객체들의 의미를 살펴보고 어떤 차이가 있는지 알아보자. 각 객체들의 관계를 그림으로 나타내 보았다. 기본적으로 도메인 모델, 엔티티, DTO, VO는 객체(Object)이다. 일단 크게는 도메인 모델 객체, DTO, VO로 나눠 볼 수 있다. 도메인 모델 객체 도메인 모델 객체(domain model object)는 어떤 도메인에 속하는 모델 객체를 가리킨다. 도메인은 해결하고자 하는 문제가 속하는 "영역"을 의미하는데, 온라인 쇼핑몰이나 여행 예약 사이트 등 서비스 종류를 도메인으로 볼 수 있다. 이 도메인은 다시 회원, 상품, 주문, 예약 등 하위 도메인으로 분해될 수 있다. 이처럼 도메인 자체는 영역 또는 범위를 의미할 뿐이고 도메인 모델은 이러한 도메인에서 사용되는 모델을 말하는데, 모델이란 .. 2023. 12. 13.
primary key 필드 타입은 원시형과 래퍼 클래스 중 어느 것을 사용해야 할까? @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Builder @Data public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_no") private Long id; //... } 이번에 기존 프로젝트 코드 리팩터링을 진행하면서 PK(기본키) 필드 타입을 무엇으로 하는 것이 맞는 건지 생각해 보게 되었다. 원시형 타입과 래퍼 클래스, 두 가지 경우가 가능하지만, 하이버네이트 공식 문서에서 래퍼 클래스를 사용을 권장해서 래퍼 클래스를 주로 사용하는 것으로 알고 있었는데, null 가능성을 열.. 2023. 12. 3.
레거시 코드에서 테스트 코드 시작하기 무진장 긴 메서드, 알 수 없는 변수 이름, 텅 빈 테스트 코드 디렉터리...ㅠ 대다수의 기업의 경우, 기존에 개발되어 있는 프로젝트를 인계받거나 처음으로 유지 보수 업무를 맡게 되면 보게 되는 코드의 특징이다. 이런 코드를 이제 수정하거나 변경해야 한다. 이 코드들을 건드리기 시작하면 무수히 많은 오류와 버그에 부딪히게 될 것을 우리는 알고 있다. 손대지 않으면 안 되냐고? 안 된다. 기업이나 고객은 늘 새로운 요구사항을 가지고 온다. 요구사항에 맞추어 수정이 일어나지 않는다면 우리는 더 이상 돈을 받을 수 없다. 테스트 코드가 없는 상황에서 수정은 항상 잠재적인 문제를 가지고 있고 문제가 발생하면 쉽게 해결되지 않아 야근으로 이어진다. 즉 테스트 코드 개발 환경에서 테스트와 배포는 항상 불안하기만 하.. 2023. 12. 1.
728x90