LOB 이란?
- Large Object의 줄임말로서, 대형 객체 데이터를 저장하기 위한 가변 길이 데이터 유형이다.
- BLOB, CLOB 2가지 종류가 있다.
* BLOB(Binary Large Object) = 이미지, 오디오, 비디오 같은 이진 데이터를 저장한다.
* CLOB = 대량의 텍스트 데이터를 저장한다.
어떻게 사용할까?
이미지, 오디오, 비디오 같은 데이터를 바이너리 형식으로 저장하거나, 대량의 텍스트 값을 저장할 때 사용하면 된다.
엔티티 객체 필드 위에 @Lob이라는 어노테이션을 달면 스프링이 추론하여 어떤 타입으로 저장할지 자동으로 판단한다.
따라서, (1) 데이터베이스에 정의한 컬럼 타입과 (2) 엔티티에 설정하는 타입을 반드시 일치시켜야 한다.
(1) 데이터베이스 컬럼 타입
MariaDB에서는 BLOB 형식은 4가지를 지원하고 있으며,
CLOB 형식은 1가지를 지원하고 있다.
(2) 엔티티 컬럼 타입
스프링에서는 아래와 같은 필드 타입에 따라 Lob을 적용한다.
CLOB = String, char[], java.sql.CLOB
BLOB = byte[], java.sql.BLOB
예시
@Entity
@Table(name = "tbl_shiba_lob")
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
@Getter
public class ShibaLob {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "img_content", columnDefinition = "MEDIUMBLOB")
@Lob
private byte[] imgContent;
@Column(name = "str_content", columnDefinition = "LONGTEXT")
@Lob
private String strContent;
}
REFERENCE
'Spring > JPA' 카테고리의 다른 글
[Querydsl] @OneToMany에서 조건 절과 Fetch Join을 함께 사용할 때 서브쿼리 사용하기 (0) | 2024.05.12 |
---|---|
@Lob 사용시 DB와 엔티티 필드 타입이 다른 경우 발생하는 문제와 해결방법 (0) | 2024.01.07 |
JPA에서 Lombok 사용시 주의할 점 (0) | 2023.12.30 |
[JPA] PK가 아닌 필드에 Auto Increment 사용하기 (0) | 2023.12.09 |
Querydsl Paging & Count Query 최적화 (0) | 2023.11.11 |
댓글