[quote=leandronsp][quote=Lucas Emanuel]1 - Exatamente, esse é o ideal. No entanto, vamos pegar como exemplo, cadastro de uma pessoa com foto. Se voce for utilizar o ID dessa entidade, primeiro é necessário gravar esta entidade no Banco, retornar o ID gerado na gravação, para depois enfim gerar o hexa do ID, setar como nome da foto. Depois é necessario gravar o nome gerado em um campo desta entidade (ex. Foto), que terá o nome do arquivo. Nesse caso o único fluxo de cadastro teve que fazer dois esforço, um para gravar, e outro para dar um update após a inserção da foto. Isso é péssimo para desempenho.
Como lidar nesses casos?[/quote]
Eu não gravo o nome gerado da foto na base. Por exemplo, eu salvo o nome da foto com o hexa do ID do usuário => toHex(usuario.getId()) + ".jpg". Na entidade usuário ( ou algum outro helper ) eu tenho um método getUrlFoto(), que retorna a url quando eu preciso, e desta forma não preciso fazer update:
return "diretorio" + toHex(usuario.getId()) + ".jpg"
Fora que ter um campo na entidade só pra guardar o path físico não acho uma boa prática.[/quote]
Olá, interessante sua abordagem.
Só uma dúvida. Voce diz que criou um método que retorna :
return "diretorio" + toHex(usuario.getId()) + ".jpg";
Só que nesse caso, ele está sempre retornando JPG. Se o usuario fez upload de uma foto com outras extensões, png, gif, etc, como voce lida com estas situações, sem ter no base o path físico da imagem?
Ou voce manipula a imagem para que ele sempre seja JPG?
Value ! 