Primefaces + Imagem no Banco(Postgres)

Boa gente.

Poxa estou precisando de uma ajuda rsrsrs.

Eu tenho que gravar imagens de alunos no banco de dados (Postgres - Foto 3x4), mas tenho 2 opções de obter esta imagem (upload de arquivo ou obter imagem via webcam) e salvar no banco.

A princípio estou usando o componente “<p:photoCam>” do Primefaces e consigo pegar a imagem, mas na hora de capturar o “<p:graphicimage>” não mostra a imagem. Pelo que eu ví o exemplo do site ele joga em um arquivo e exibe no componente. Eu estou tentando obter o “byte[]” e passar para o “<p:graphicimage>” convertendo para “StreamedContent”, mas nada acontece.

Segue meu código.

Obs.: Sei que normalmente se grava imagem em arquivos e só passa caminho para o banco de dados, mas como regra aqui infelizmente preciso gravar a imagem no banco e mostrar na tela.

Meu maior problema agora, é fazer com que a imagem capturada pela WebCam apareça na tela como no exemplo do PrimeFaces.org e como o retorno é byte[] dai eu ja consigo passar para o banco.

Se alguém puder me ajudar agradeço.

Da tela

<h:form>
     <p:photoCam listener="#{webCamBean.onCapture}" widgetVar="pc" update="photo"/>       
     <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/>
			
     <p:graphicImage id="photo" value="#{webCamBean.image}"/>
</h:form>

Do bean

@ManagedBean
@RequestScoped
public class WebCamBean 
{
	private StreamedContent image;
	public StreamedContent  getImage()
	{
		return this.image;
	}
	public void setImage(StreamedContent  image)
	{
		this.image = image;
	}
	
	public void onCapture(CaptureEvent captureEvent)
	{
		InputStream inputStream = new ByteArrayInputStream(captureEvent.getData());
		image = new DefaultStreamedContent(inputStream, "image/png");
	}
}

Olá, marcdas! Pelo que pude observar o problema está relacionado ao escopo que se encontra seu ManagedBean. Perceba que você tem os seguintes escopos principais:
@RequestScoped : o bean é construído a cada nova requisição.
@ViewScoped : o bean é mantido até que a “view” seja perdida, ou seja, se for redirecionado para outra página, o Bean será reconstruído quando você voltar para a página anterior.
@SessionScoped : dura toda a sessão de acesso do usuário.
@ApplicationScoped : dura enquanto a aplicação estiver “de pé”. Vale salientar que o ‘@ApplicationScoped’ vale para todos os usuários do seu sistema. Os demais escopos, valem para o usuário da sessão.

Nessa ordem, quanto mais você desce, maior será o consumo de recursos da sua aplicação. Tente sempre utilizar ‘@ViewScoped’ e ‘@RequestScoped’. Dependendo da funcionalidade, vai te dar uma maior segurança para escalar tua aplicação.

Sugiro você a considerar o uso do ‘@ViewScoped’. Com isso, mesmo que a página recarregue, você ainda terá o objeto ‘image’ do Bean em questão.