Garela seguinte, estou usando o PostgreSQL 9.2 e programando em Java Swing utilizando o Netbeans, como posso fazer para armazenar imagens no banco de dados sendo que utilizo JPA para conexão ao banco?
Desde já agradeço a ajuda!!!
Garela seguinte, estou usando o PostgreSQL 9.2 e programando em Java Swing utilizando o Netbeans, como posso fazer para armazenar imagens no banco de dados sendo que utilizo JPA para conexão ao banco?
Desde já agradeço a ajuda!!!
Olha, o que muita gente costuma fazer é não gravar as imagens no banco, mas sim o caminho delas no servidor.
Tem gente que fala que o banco fica pesado, tem gente que diz o contrário… eu nunca soube ao certo, mas nem todos bancos tem o poder de armazenar arquivos.
se quiser gravar no banco mesmo usa array de bytes(byte[])
Olha, o que muita gente costuma fazer é não gravar as imagens no banco, mas sim o caminho delas no servidor.Tem gente que fala que o banco fica pesado, tem gente que diz o contrário… eu nunca soube ao certo, mas nem todos bancos tem o poder de armazenar arquivos.
De fato não é boa ideia.
Na prática o que deveria ser feito era ter a imagem num cache com backup num banco de dados para não se perder ( por exemplo, a foto do funcionário no cadastro de funcionários).
Tem apenas a imagem no servidor web é errado porque a imagem em si, é um dado. Mas sempre lê-la do banco de dados também não é bom.
Por isso um cache vem mesmo a calhar , mas depende muito da frequência que a imagem é lida.
Para usar com JPA tem a opção de BLOB com array de byte.
Mas seria melhor disponibilizar isso como InputStream ( pois o array é mutável);
Uma opção , se usa apenas o PostgreSQL é usar uma truques da api do driver dele , que disponibilizam o inputstream. Isto é mais performático que usar o JPA, mas só funciona se vc amarrar seu sistema com o PostgreSQL para sempre.
Considere também guarda no PostgreSQL as referencias das imagens e usa um NoSQL para guardar a imagem em si.
E ae galera
Passei pela mesma situação alguns meses atrás, e concordo jaboot pela seguinte questão performance.
A questão é a seguinte a opçõa blob é bem vinda, mas tem que levarmos em consideração o quanto de imagem e o tamanho dessa imagem que será gravada em banco, e todo o processo entre fazer input e gerar um array será mais lento do que criar um path salvar no banco e fazer essa requisição em disco, é como eu disse tudo depende do tamanho e quantidade.
No meu caso eu fiz um album e ficou muito mais performatico acessar via disco.