[Livro Java EE] Armazenar imagens no BD e Conversores

Boa tarde, Alberto e demais colegas.

Estou lendo o livro sobre JavaEE e, até o ponto onde estou, me vieram as seguintes dúvidas:

  1. Quando você fala de upload de arquivos, sua estratégia é gravar o arquivo no servidor (ou na nuvem) e armazenar o caminho para o mesmo no BD. O que você acha da estratégia de gravar o próprio arquivo no BD, utilizando o formato BLOB? Você vê algum ponto fraco dessa estratégia? Enfim, minha dúvida é sobre sua tomada de decisão mesmo…

  2. Você utiliza uma lista que permite múltiplas seleções para escolha dos autores de um livro. Você criou um conversor para transformar as seleções do usuário em objetos Java. Queria entender um pouco mais sobre essa estratégia. O objeto selecionado pelo usuário fica armazenado (de forma serializada) na árvore de componentes do lado do servidor? Já vi alguns códigos em que o pessoal pega o ID do objeto e faz uma busca no BD, utilizando o DAO correspondente ao objeto desejado. O que você acha dessa estratégia?

Muito obrigado e até mais.
Paulo.

Oi Paulo, mil desculpas pela demora.

Em relação ao primeiro ponto, é mais pela facilidade. Gravar o arquivo em um servidor externo, tipo o S3 da amazon, facilita bastante a exibição do arquivo. Basta colocar a url apontando para lá e ta tudo certo. Caso tivesse gravado o mesmo no banco de dados, teria que fazer o código responsável por devolver esse array de bytes para o navegador, com headers e tudo mais setado. Resumindo, aqui a facilidade me guiou.

Na árvore fica apenas o valor do componente do JSF e ele utiliza o converter justamente para entregar esse valor para sua aplicação e para a página. Em relação a usar o DAO, vai depender do que você precisa. Para a maioria dos casos, estamos apenas estabelecendo a relação entre os objetos e, nesse cenário, acho que é mais jogo só instanciar o objeto e setar o id nele.