전체 글 317

@Enumerated

자바의 enum 타입을 매핑할 때 사용한다. 속성 기능 기본값 value EnumType.ORDINAL: enum 순서를 데이터 베이스에 저장 EnumType.STRING: enum 이름을 데이터베이스에 저장 EnumType.ORDINAL EnumType.ORDINAL 데이터베이스에 저장되는 데이터 크기가 작다. 이미 저장된 enum의 순서를 변경할 수 없다. EnumType.STRING (권장) 저장된 enum의 순서가 바뀌거나 enum이 추가되어도 안전하다. 데이터베이스에 저장되는 데이터 크기가 ORDINAL에 비해서 크다.

JVM/JPA 2023.06.11

@Column

객체 필드를 테이블 컬럼에 매핑하는데 사용되는 애노테이션이다. @Column을 생략하게 되면 기본값이 적용되는데, 자바 기본 타입일 때는 nullable 이 false가 된다. 속성 기능 기본값 name 필드와 매핑할 테이블의 컬럼이름 필드 이름 insertable 엔티티 저장 시 이 필드도 같이 저장한다. false옵션은 읽기 전용일 때 사용한다. true updatable 엔티티 수정 시 이 필드도 같이 저장한다. false옵션은 읽기 전용일 때 사용한다. true table 하나의 엔티티를 두 개 이상의 테이블에 매핑할 때 사용. 지정한 필드는 다른 테이블에 매핑할 수 있다. 현재 클래스가 매핑된 테이블 nullable null 값의 허용 여부를 설정한다. true unique 한 컬럼에 유니크 제..

JVM/JPA 2023.06.11

JPA 키 생성 전략

직접 할당 전략 기본 키를 직접 할당하려면 @Id만 매핑하면 된다 @Id private Long id; 적용 가능 자바 타입 자바 기본형 자바 래퍼형 String java.util.Date java.sql.Date java.math.BigDecimal java.math.BigInteger IDENTITY 전략 기본 키 생성을 데이터베이스에 위임하는 전략이다. @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; 엔티티를 데이터베이스에 저장한 후에 식별자를 조회해서 엔티티의 식별자를 할당한다. 때문에 이 전략은 persist 메소드 호출 시 즉시 INSERT SQL이 데이터베이스에 전달되어 트랜잭션을 지원하는 쓰기 지연이 동작하지..

JVM/JPA 2023.06.10

@Entity

JPA를 사용해서 테이블과 매핑할 클래스에 필수로 붙여야한다. 주의 사항 기본 생성자는 필수다. final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final을 사용할 수 없다. 속성 정리 속성 기능 name JPA에서 사용할 엔티티 이름을 지정한다. 생략시 클래스 이름을 사용한다. 다른 패키지에 이름이 같은 엔티티 클래스가 있다면 이름을 지정해서 충돌하지 않도록 해야 한다.

JVM/JPA 2023.06.10

@Table

@Table 애노테이션은 엔티티와 매핑할 테이블을 지정한다. 속성 정리 속성 기능 name 매핑할 테이블 이름, 생략시 엔티티 이름 사용 catalog catalog 기능이 있는 DB에서 catalog를 매핑 schema schema 기능이 있는 DB 에서 schema를 매핑 uniqueConstraints(DDL) DDL 생성 시에 유니트 제약조건을 만든다. 2개 이상의 복합 유니크 제약조건도 만들 수 있다. 실행 로직에는 영향을 주지 않으며 DDL을 만들 때만 사용된다.

JVM/JPA 2023.06.10

wsl2 프로젝트 오픈 시 Intellj 프리징 현상

얼마 전 재택 근무용 노트북을 구매했다. 맥은 비싸서 윈도우즈에 개발환경을 구축 중에 문제가 발생했다. 현상 인텔리제이에서 wsl2 안에 있는 프로젝트를 오픈하면 인덱싱 중에 자꾸만 멈추거나 wsl2 안에 있는 jdk를 불러오다가 멈추는 현상이었다. 문제 열심히 구글링 한 결과 인텔리제이나 wsl2의 문제가 아니라 방화벽에 문제인 것으로 확인되었다. https://github.com/microsoft/WSL/issues/8995 해결 Windows 보안 - 바이러스 및 위협 방지 - 바이러스 및 위협 방지 설정 - 설정 관리 - 제외로 들어간다. 아래의 두개 프로세스를 제외 사항에 추가한다.

wsl2 2023.05.25

[WAF] NestJS 애플리케이션 AWS에 배포하기 08

인프라 구성도 이번 시간에는 ALB를 방어하기 위해 WAF를 설정하겠습니다 WAF(Web Application Firewall) 기본적으로 AWS에 모든 리소스는 AWS Shield Standard로 보호됩니다. Shiled Standard는 네트워크 레벨에서의 DDos 보호, SYN Flood, UDP Flood 및 Reflection Attacks와 같은 공격 유형에 대한 자동 탐지 및 차단, 대역폭 공격에 대한 자동 스무딩을 무료로 제공합니다. 만일 더 다양한 보안 위협을 탐지 및 차단하고 싶다면 WAF를 사용하는 게 좋습니다. WAF는 아키텍처의 변경 없이 CloudFront, API Gateway, AppSync, ALB에 적용할 수 있으며 웹 ACL(액세스 제어 목록)을 정의한 다음 보호하려는..

DevOps/AWS 2023.04.25

NestJS JWT 발급과 인증

저번 시간에는 Google OAuth를 통해 사용자를 인증하는 방법에 대해 다뤘습니다. 오늘은 이어서 인증된 정보를 가지고 JWT를 발급하고 인증하는 방법에 대해서 다루겠습니다. 패키지 설치 npm i --save @nestjs/jwt passport-jwt bcryptjs npm i --save-dev @types/passport-jwt @types/bcryptjs @nestjs/jwt는 Nest.js 프레임워크에서 JWT(JSON Web Tokens) 인증을 구현할 때 사용되는 패키지입니다. passport-jwt는 Passport와 함께 JWT 인증을 사용할 때 사용되는 패키지입니다. bcryptjs는 refresh token을 해쉬하여 데이터베이스에 저장하기 위해서 설치합니다. JWT 발급 Jwt..

Javascript/NestJS 2023.04.23

NestJS OAuth 인증 두번째

첫번째 시간에는 Google 클라이언트 ID를 발급받는 방법을 다뤄보았습니다. 이번 시간에는 Passport와 NestJS에 가드를 통해 인증을 진행하겠습니다. 패키지 설치 npm i --save @nestjs/passport passport passport-google-oauth20 @nestjs/jwt --save-dev @types/passport @types/passport-google-oauth20 각 패키지들에 대해서는 차차 설명하도록 하겠습니다. Passport Passport는 Node.js에서 사용되는 인증 미들웨어로, 다양한 인증 전략(strategy)을 지원하며, 사용자 정의 전략을 만들어서 사용할 수도 있습니다. @nestjs/passport를 사용하면 NestJS에서 passpor..

Javascript/NestJS 2023.04.23

NestJS OAuth 인증 첫번째

사이드 프로젝트에서 로그인은 네이버, 카카오, 구글을 통한 소셜 로그인만 제공하기로 하였습니다. OAuth 프로세스 브라우저에서 서버로 OAuth 로그인 페이지를 요청합니다. 서버는 브라우저를 OAuth 서비스 제공자의 로그인 페이지로 리다이렉트시킵니다. 로그인 성공시 서비스 제공자는 브라우저를 서버와 사전에 협의된 URL로 Access Token과 함께 리다이렉트시킵니다. 서버는 서비스 제공자에게 인증코드를 보내고 서비스 제공자는 사용자 정보를 서버로 보냅니다 Google OAuth 클라이언트 등록 1. https://console.cloud.google.com/ 에 로그인합니다. 2. "프로젝트 만들기"를 선택하여 자신의 프로젝트를생성합니다. 3. "API 및 서비스" > "사용자 인증 정보" > “..

Javascript/NestJS 2023.04.23
728x90