본문 바로가기

컴퓨터공학/Java

CS> 데이터베이스에 어떻게 이미지를 저장하고 가져올까?

Store and retrieve images

common requirement of many project

많은 프로젝트에서 요구되는 기능인데 크게 두 가지 방법이 있다. 

disc approach 와 database approach 이다.

 

Disc approach

save real images on disc

실제 이미지 파일을 데이터베이스가 아니라 디스크에 저장하고

keep data reference in DB

파일 path 와 같은 메타데이터 정보를 데이터베이스에 저장한다. 

good in big size of images

큰 데이터 파일이면 유리하다.

better performance

속도가 빠르다. 

multi database can share

이미지 파일을 특정 데이터베이스에 저장하는게 아니라서 데이터베이스가 여러 개면 이미지 파일을 공유할 수 있는 장점이 있다. 

 

Database approach

save real images in database

실제 이미지를 데이터베이스에 바이트 데이터로 저장하는 방법 

image size is small

파일 사이즈 크면 부담이 되니 작게

BLOB column in database

데이터베이스 칼럼은 Binary large object로 정의함

setBinaryStream()

자바에서는 setBinaryStream 메소드를 통해서 이미지를 데이터베이스에 저장하고

이미지를 가져올 경우 java.sql에 있는 BLOB타입으로 가져오면 된다.

데이터베이스에 이미지 저장하기

데이터베이스에서 이미지 가져오기

BLOB 형식으로 데이터베이스에서 가져온 다음 바이트 어레이 형식으로 변환하고  ouputstream에서 바이트 어레이 데이터를 넣어서 이미지를 생성한다. 

 

정리

 

Disc apporach Database approach
save images on disc save images in database
Image size is not small Image size is small
setString(FILE_PATH) setBinaryStream( )
much faster slow performance
multiple database share only one database uses