분류 전체보기
-
[Java] Request DTO 불변 객체로 만들기 - JSON 역직렬화Programming/Java 2023. 5. 29. 01:10
들어가기 전에 DTO 혹은 VO 객체가 한 번 생성하고 나서 값이 변경될 가능성이 없다면 Immutable 하게 생성하는 것이 좋다고 한다. Gotcha 프로젝트를 리팩토링하며 불변 객체화할 수 있는 클래스들을 불변 객체화 하는 것을 진행해보려고 한다. 제일 간단한 기능을 기준으로 테스트해보고자한다. 수정전 Controller, Service, Request DTO는 아래와 같다. Repository는 Spring Data JPA를 이용한 기본 메소드를 사용했다. [DuplicateNicknameRequest] *참고) - @NoArgsConstructor는 Jackson에서 리플렉션을 통해 json 데이터로 객체를 생성할 수 있도록 함 - @Builder 는 test code 작성시 객체를 생성하기 ..
-
[Java] 불변 객체(Immutable Object)와 final을 사용해야 하는 이유Programming/Java 2023. 5. 28. 21:20
프로젝트를 진행하며 의존성 주입을 위해 private final을 써왔었다. 그런데 이 final이라는 것에 대해 제대로 고민하고 다른 객체에 사용해본 적이 없는 것 같아 Gotcha 프로젝트를 리팩토링하며 배운 내용들을 포스팅해보고자 한다. 불변 객체(Immutable Object)란? : 객체 생성 이후 내부의 상태가 변하지 않는 객체 ➡️ 한 번 생성이 된 불변 객체는 신뢰할 수 있다. - read-only 메소드만 제공하며 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사를 통해 제공 - Java의 String은 대표적인 불변 클래스로 String Pool이라는 공간에 String 객체를 보관하고 있음 - 변수에 새로운 값을 할당할 경우 객체의 value가 변하는 것이 아닌 새로운..
-
[DB] 스키마(Schema) 개념 및 계층DB/DB Basic 2023. 5. 18. 11:45
스키마(Schema)란? : 데이터베이스의 구조(개체, 속성, 관계)화되는 방식을 정의 - DBMS이 주어진 설정에 따라 Schema를 생성하고 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터 스키마를 참조하여 명령을 수행 - 테이블 이름, 필드, 데이터 유형, 엔티티 간의 관계 등 논리적 제약조건이 포함됨 스키마의 3계층 외부(서브) 스키마 (External Schema) = 사용자 뷰 - 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조 정의 - 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스크미라를 여러 개의 응용 프로그램이나 사용자가 공용 가능 - DML을 사용해 데이터 이용 개념 스키마 (Conceptual Schema..
-
[DB] 데이터 모델의 종류와 구성 요소 (엔티티, 속성, 관계)DB/DB Basic 2023. 5. 17. 16:25
데이터 모델이란? : 현실 세계 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형 - 데이터 모델은 데이터 구조를 결정 - 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위한 개념적 도구 데이터 모델의 유형 1. 개념적 데이터 모델 - 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현 - 구축하고자 하는 업무 모델의 핵심 데이터 구조를 큰 그림으로 구성하는 것 - "빅 픽쳐" 모델이라고도 불리며 전반적인 구조와 콘텐츠를 나타내지만 데이터 계획의 세부사항은 표시하지 않음 - 데이터 모델링의 시작점으로 다양한 데이터세트와 조직 전체의 데이터 흐름을 식별 - 논리 및 물리 모델 개발에 대한 상위 레벨의 청사진 2. 논리적 데이터..
-
[DB] DB 개념, 특징과 DBMS 종류 (RDBMS, NO SQL)DB/DB Basic 2023. 5. 17. 13:24
DB(Database) 란? : 데이터의 집합. 여러 사람이 공유하여 사용할 목적으로 통합 관리하는 데이터의 집합을 의미. - 데이터: 현실 세계에서 사건이나 사물의 특징을 관할하거나 측정하여 기술하는 가공되지 않은 사실이나 값 - 정보: 의미있고 쓸모 있는 내용으로 가공하여 체계저으로 조직한 데이터 → 데이터베이스는 단순한 데이터 저장소가 아닌, SQL 등으로 세밀히 제어가 가능하며, 정보를 통합하여 구조적이며 효율적으로 데이터를 저장 관리할 수 있음 DB의 데이터 특징 1. 통합된 데이터 (Integrated Data) - 중복된 정보를 통합하여 자료의 중복을 최소화한 데이터의 모임으로 구성 - 데이터의 일관성 유지, 관리비용 감소 가능 2. 저장된 데이터 (Stored Data) - 컴퓨터가 접근 ..
-
[Git] Stash 개념과 사용 방법 - Commit 할 수는 없는데 브랜치 전환이 필요할 때!Programming/Git 2023. 4. 23. 21:38
[들어가기 전에] 프로젝트를 하다보면 종종 아직 작업한 부분이 Commit을 할 수는 없는 상태인데 브랜치 변경을 해서 다른 브랜치에서 작업이 급하게 필요할 때 현재 작업한 부분을 어떻게 해야할지..?애매한 상황이 종종 발생하곤 했었다! 그럴 때 파일의 변경 사항들을 임시적으로 저장할 수 있는 것이 Git Stash! 이번에 강의를 들으면서 새롭게 알게 되었다. 역시 안되는건 없다,, [Git Stash 개념] : 아직 완성되지 않은 작업을 스택에 임시 저장할 수 있도록 하는 깃 명령어 - stash는 워킹 디렉토리에서 수정한 파일들만 저장(아래 2가지 종류의 파일) 1) Modified & Tracked 상태의 파일 2) Staging Area에 있는 파일(Staged 상태의 파일) [사용 방법] 1...
-
[Mac M1] zsh: command not found: code (VS code에서 설치했는데도 안될 때!)Programming/Git 2023. 4. 23. 16:03
[문제 상황] - iTerm2에서 code 명령어를 이용해 vs code 편집기를 자동으로 실행하고 싶었으나 zsh: command not found: code 에러 발생 [해본 것] 1. VS Code에서 cmd+shift+p를 눌러 Shell Command: Install 'Code' command in PATH 설치 > 안됨 - 설치 후에 껐다 켜고, VS Code가 응용프로그램에 안들어가 있어서 그것도 넣어주고 해도 안 됨 - 잘 몰랐던 시절에 ~/.zshrc에 PATH를 이것저것 등록하고 난잡하게 사용해서 패스가 꼬였나?해서 oh my zsh도 삭제하고 homebrew 등 기본 프로그램도 다 삭제하고 재설치 후 다시 이 방법을 도전했으나 안됨 2. 터미널에서 ~/.zshrc 파일실행하여 code..
-
[CI/CD] Jenkins 스크립트에서 프로젝트 빌드시 Dockerfile 경로 설정하는 법Dev Ops/CI-CD 2023. 4. 17. 00:32
[상황] - Jenkins에서 item이 3개로 구분되어서 빌드 진행(Backend-spring/Backend-python/Frontend) - 스프링서버와 파이썬서버는 각각 무중단배포와 Auto-scaling을 위해 Docker로 빌드하여 Dockerhub에 올린 후 이미지로 서버를 실행 - 각각의 Git branch에서 작업할 당시에는 Dockerfile이 겹치지 않아 각자 빌드가 잘 작동 - master로 머지하는 과정에서 Dockerfile 충돌로 빌드가 되지 않음 [해결 방법] 매우매우 간단!! - 우선 Dockerfile을 각 directory 안에 별도로 생성해줌 - 각각의 Jenkins pipeline script에 Dockerfile의 경로를 지정해줌 (지정해주지 않을 경우, 상위 디렉토..