문제점
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int boardNumber;
private String title;
private String content;
/* fields getter builder constructor */
}
- 이렇게 되어 있었다.!
CREATE TABLE board (
board_number integer GENERATED BY DEFAULT AS IDENTITY,
comment_count integer,
content varchar(255),
created_at timestamp(6) NOT NULL,
favorite_count integer,
title varchar(255),
updated_at timestamp(6) NOT NULL,
view_count integer,
email varchar(50),
PRIMARY KEY (board_number) )
쿼리 나가는걸 확인해보니?!
255Bytes 음
한국어가 3bytes니깐 이건 몇 글자 저장못하네????!!!
오마이갓
JPA의 기능을 너무 맹신했다는 생각이 들었다...
해결
1. @Lob 어노테이션을 활용한다.
- 찾아보니 4GB만큼 저장할 수 있다고 해서 든든하네. 하고 있었는데..
- https://www.inflearn.com/questions/114710/lob-%EA%B4%80%EB%A0%A8%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4
- 성능저하가 존재한다고 해서..
2. @Column(length = 4000)을 사용하기로 확정했다.
- 아무래도 사진이나 첨부파일 데이터는 경로만 db에다가 저장하고 실제 저장은 특정 서버의 공간에 저장할 것이기에
- 4000바이트로 주고, 글자수 제한을 프론트에서 1000글자 이내로 제한을 하면 되지 않을까 싶었다.
- 백엔드 쪽에서도 한번 검증이 필요할 것 같다.
'프로젝트' 카테고리의 다른 글
동시성 문제를 해결하는 방법 - Pessimistic Lock으로 해결 (0) | 2024.03.04 |
---|---|
리팩토링 함수 추출하기 (0) | 2024.02.19 |