본문 바로가기

MySQL7

[JPA] Entity PK는 bigint(MySQL)-Long(java) 타입으로 해야 하는 이유 프로젝트 개발 시 향후 대량의 데이터를 고려한다면 JPA를 통해 Entity PK는 bigint 타입이 좋다.중규모의 프로젝트면 int 타입이 적절하지만, 거의 대부분이 대량의 데이터를 DB에 저장하게 되므로 그 많은 수억건의 데이터들을 다 수정하려면 꽤 많은 시간이 소요되기 때문에 애초에 개발 시 bigint 타입으로 하는 것이 좋다. 비록 int형에 비해 디스크 용량을 많이 차지하지만 향후 유지보수를 위해선 bigint 타입으로 하는 것이 옳다. 2024. 2. 15.
[JPA] jpa insert시 default 적용 jpa 엔터티 default 설정을 하려면 @DynamicInsert 어노테이션과 @ColumnDefault 어노테이션을 같이 써야 적용이 된다. 예시코드(java):package com.pnow.domain;import com.pnow.domain.user.User;import lombok.Getter;import lombok.Setter;import org.hibernate.annotations.ColumnDefault;import org.hibernate.annotations.DynamicInsert;import javax.persistence.*;import java.time.LocalDate;import java.time.LocalTime;@Setter //jpa 테스트를 위해@Getter@En.. 2024. 2. 13.
[MySQL] DECIMAL, FLOAT, DOUBLE, BIT 소수점 표현 고정 소수점 타입(fixed-point types) MySQL에서 고정 소수점 타입인 DECIMAL은 실수의 값을 정확하게 표현하기 위해 사용됩니다. DECIMAL에서 사용하는 고정 소수점 방식은 실수를 표현할 때 소수부의 자릿수를 고정하여 표현합니다. 즉, 소수부의 자릿수를 미리 정해 놓고, 고정된 자릿수로만 소수 부분을 표현하는 방식입니다. MySQL에서 DECIMAL 타입은 NUMERIC을 구현하여 만들어졌습니다. 따라서 대부분의 경우 DECIMAL 대신 NUMERIC을 사용해도 똑같이 동작합니다. 문법 DECIMAL(M,D) M은 소수 부분을 포함한 실수의 총 자릿수를 나타내며, 최댓값은 65입니다. D는 소수 부분의 자릿수를 나타내며, D가 0이면 소수 부분을 가지지 않습니다. 다음 예제는 AL.. 2024. 2. 10.
[MySQL] AUTO INCREMENT vs UUID 데이터베이스 테이블을 생성할 때 PK 설정에 대해 Auto Increment를 사용할 지 , uuid를 사용할지 고민이 된다. 두 차이점을 명확히 파악하여 PK를 올바르게 설정하자. AUTO INCREMENT auto increment는 키를 예측하기 쉬워 보안에 취약하다. int타입 분산 시스템에 적합하지 않다. ( 여러 데이터베이스가 있는 상황에서 insert를 한다고 생각하자. 별다른 동기화가 되어있지 않다면, 데이터베이스 A 가 insert를 받으면 1,2,3,4,5,6으로 키가 증가할거고, 데이터베이스 B 또한 insert 쿼리를 받으면 1,2,3,4,5,6으로 키가 증가할것이다. 즉 Duplicate Key가 발생하여 데이터 일관성에 문제가 생길 것이다. ) uuid보다 메모리를 덜 차지하고,.. 2024. 2. 10.