분류 전체보기 342

[JPA] @ElementCollection

JPA에서 @ElementCollection 애너테이션은 관계형 데이터베이스에서 값 타입을 컬렉션으로 매핑하기 위해 사용된다. 이를 통해서 개체에 속하는 값들을 한번에 모아서 저장할 수 있다. 어 그러면 그냥 Entity에 List를 만들어서 값을 저장하면 되는 거 아닌가?? 안된다. 관계형 데이터베이스는 일반적으로 컬렉션을 담을 수 있는 구조를 가지고 있지 않기 때문에 @ElementCollection 애너테이션을 통해서 값 타입 컬렉션을 매핑하는 것이다. 다음과 같은 경우에 해당 애너테이션을 사용할 수 있을 것이다. 예를 들어, 주문 엔티티는 여러 개의 주문 상품을 포함할 수 있지만 주문 상품 자체는 엔티티로서의 의미가 없는 값 타입일 것이다. 이런 경우에 엔티티를 또 사용해서 @OneToMany로 ..

[Java] @NotNull / @NotEmpty / @NotBlank

DTO에 유효성 검사를 적용하던 도중, 값이 비어있지 않도록 설정하기 위해 사용하는 애너테이션이 여러 개인 것을 확인했다. 모두 값이 비어있는 것을 허용하지 않는 애너테이션인데 왜 여러 개로 나뉘어 있을까라는 의문이 들어 알아보게 되었다. 먼저, @NotNull, @NotEmpty, @NotBlank 모두 프로그래밍에서 사용되는 데이터 유효성 검사에 관련한 애너테이션이다. 이 애너테이션들은 공통적으로 데이터가 null 인지 확인하고 추가적으로 공백 여부를 확인하느냐 마냐에 차이점이 있었다. @NotNull 데이터가 null 인지만 확인하는 애너테이션이다. 데이터가 null일 경우 유효성 검사를 통과하지 못하며, null이 아닌 경우에만 유효성을 갖는다. @NotEmpty 데이터가 null이 아니며, 길이..

개발 일지/Java 2023.04.18

[Git] Git Commit Message Convention

지금까지 혼자 공부하면서 마음대로 커밋 메시지를 작성해 왔었다,, 하지만 이제 프론트엔드 분들과 협업을 진행하게 되면서 '깃 커밋 메시지 컨벤션'이라는 많은 개발자 분들이 따르는 관습을 공부하고 지켜보려고 한다. 이러한 과정이 후에 또 다른 분들과 협업을 진행함에 있어 큰 도움이 되기를 바란다. Git commit message convention이란, Git을 사용하여 프로젝트를 관리할 때 개발자 분들이 커밋 메시지를 일관된 형식으로 작성할 수 있도록 지침을 제공하는 것을 말한다. 이렇게 일관된 커멧 메시지 형식은 프로젝트의 유지보수성과 협업 효율성을 높이는 데 중요한 역할을 한다. 팀 회의를 통해 Udacity Git Commit Message Style Guide를 참고하여 사용하기로 했다. Uda..

개발 일지/Git 2023.04.13

[Spring Boot] web.xml

web.xml은 Java 웹 애플리케이션에서 사용하는 설정 파일 중 하나로, 웹 애플리케이션의 구성 요소와 동작 방식을 정의한다. 웹 애플리케이션이 배포되면 웹 애플리케이션 서버에서 web.xml 파일을 읽어서 애플리케이션을 구성하고 초기화한다. web.xml 파일은 다음과 같은 정보를 포함할 수 있다. Servlet 정의 : Servlet 이름, Servlet 클래스, Servlet 매핑 정보, 초기화 매개변수 등 Servlet과 관련된 설정 정보를 포함한다. filter 정의 : filter 이름, filter 클래스, URL 패턴, 초기화 매개변수 등 필터와 관련된 설정 정보를 포함한다. filter는 Servlet 요청과 응답을 중간에서 가로채서 처리할 수 있다. Listener 정의 : list..

[Git] 내가 보려고 만든 git 명령어 모음

git 저장소 생성 및 관리 git init : 새로운 git 저장소 생성 git status : 현재 git 저장소의 상태 확인 git clone [원격 저장소 주소] : 기존 git 저장소를 로컬 컴퓨터로 복제 git add [파일명.확장자명] : 파일의 변경사항을 스테이징 영역에 추가 git reset [파일이름] : 스테이징 되돌리기 git commit -m "메시지" : 스테이징 영역에 추가된 변경 사항을 커밋(스냅샷 생성) git commit --amend : 커밋 메시지 수정 git reset HEAD^ : 현재 HEAD의 이전 커밋으로 되돌리기 git reset HEAD~n : 현재로부터 n번째 이전 커밋으로 되돌리기 git diff : 스테이징 되지 않은 변경 사항 출력 git diff ..

개발 일지/Git 2023.04.11

[Sprgin JPA] FetchType

JPA에서는 연관된 엔티티를 조회할 때 어떤 방식으로 가져올지를 'FetchType' 옵션으로 지정할 수 있다. FetchType.EAGER : 해당 엔티티를 조회할 때 즉시 관련 엔티티도 함께 조회한다. 엔티티를 조회하는 쿼리를 실행할 때 연관된 엔티티도 함께 조회하기 때문에 성능 상 이점이 있다. 하지만 조회할 엔티티의 개수가 많아질 경우 부담을 줄 수 있으며, 엔티티 간의 연관 관계가 복잡해지면서 쿼리가 복잡해질 수 있다. 또한 원하지 않는 데이터를 로딩하는 경우가 발생할 수 있다. FetchType.LAZY : 연관된 엔티티를 실제로 사용할 때만 조회한다. 엔티티를 로딩하는 쿼리를 실행하지 않기 때문에 초기 로딩 시간을 단축할 수 있다. 하지만 엔티티를 사용할 때마다 연관된 엔티티를 조회해야 하므..

[Cloud] VPC

VPC(Virtual Private Cloud)는 클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 한다. VPC를 사용하면 클라우드에서 사용하는 가상 서버들이 하나의 네트워크 상에 위치하며, 이를 통해 보안, 연결성, 관리 등의 이점을 제공한다. VPC는 다양한 클라우드 제공업체에서 제공하는데, 대표적으로 AWS(Amazon Web Services), Microsoft Azure, Google Cloud Platform 등이 있다. 각 제공업체마다 조금씩 다른 구성과 기능을 가지고 있지만 전반적으로 비슷한 구성과 기능을 제공한다. VPC를 구성하기 위해서는 우선 VPC 내에 사용할 IP 대역을 정의해야 한다. 이 IP 대역은 VPC 내에서 사용되..

개발 일지/CS 2023.04.08