Imagens no banco de dados Usando Hibernate JPA CDI Primefaces (Modelo, Repositório, Serviços e Controllers)

Java

19/05/2015

Estou com um problema que aparentemente é fácil e querendo ou não encontra-se disponível na internet algumas soluções, porém estou usando as seguintes tecnologias, Hibernate, JPA, CDI com postgres e primefaces, e preciso criar uma maneira de gravar e fazer um load (select) de imagens, o padrão que estou trabalhando é Modelo, Repositório, Serviços e Controles.

A Classe de Entidade;
import java.io.Serializable;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;


@Entity
@NamedQueries({
    @NamedQuery(name = "Imagens.findAll", query = "SELECT i FROM Imagens i")})
public class Imagens implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @GeneratedValue (strategy = GenerationType.SEQUENCE)
    private Integer codimagem;
    @Lob
    private byte[] imagem;
    private Boolean ativo;
    private Integer codusualt;
    @Temporal(TemporalType.TIMESTAMP)
    private Date dtalteracao;
    @Basic(optional = false)
    @NotNull
    private int codusucad;
    @Temporal(TemporalType.TIMESTAMP)
    private Date dtcadastro;
    @Basic(optional = false)
    @NotNull
    private int codempresa;
    @Size(max = 45)
    @Column(name = "codsincro_desktop")
    private String codsincroDesktop;
    private Boolean excluido;
    @JoinColumn(name = "codunidloc", referencedColumnName = "codunidloc")
    @ManyToOne
    private UnidadesPatrimoniais codunidloc;

    public Imagens() {
    }

    public Imagens(Integer codimagem) {
        this.codimagem = codimagem;
    }

    public Imagens(Integer codimagem, int codusucad, int codempresa) {
        this.codimagem = codimagem;
        this.codusucad = codusucad;
        this.codempresa = codempresa;
    }

    public Integer getCodimagem() {
        return codimagem;
    }

    public void setCodimagem(Integer codimagem) {
        this.codimagem = codimagem;
    }

    public byte[] getImagem() {
        return imagem;
    }

    public void setImagem(byte[] imagem) {
        this.imagem = imagem;
    }

    public Boolean getAtivo() {
        return ativo;
    }

    public void setAtivo(Boolean ativo) {
        this.ativo = ativo;
    }

    public Integer getCodusualt() {
        return codusualt;
    }

    public void setCodusualt(Integer codusualt) {
        this.codusualt = codusualt;
    }

    public Date getDtalteracao() {
        return dtalteracao;
    }

    public void setDtalteracao(Date dtalteracao) {
        this.dtalteracao = dtalteracao;
    }

    public int getCodusucad() {
        return codusucad;
    }

    public void setCodusucad(int codusucad) {
        this.codusucad = codusucad;
    }

    public Date getDtcadastro() {
        return dtcadastro;
    }

    public void setDtcadastro(Date dtcadastro) {
        this.dtcadastro = dtcadastro;
    }

    public int getCodempresa() {
        return codempresa;
    }

    public void setCodempresa(int codempresa) {
        this.codempresa = codempresa;
    }

    public String getCodsincroDesktop() {
        return codsincroDesktop;
    }

    public void setCodsincroDesktop(String codsincroDesktop) {
        this.codsincroDesktop = codsincroDesktop;
    }

    public Boolean getExcluido() {
        return excluido;
    }

    public void setExcluido(Boolean excluido) {
        this.excluido = excluido;
    }

    public UnidadesPatrimoniais getCodunidloc() {
        return codunidloc;
    }

    public void setCodunidloc(UnidadesPatrimoniais codunidloc) {
        this.codunidloc = codunidloc;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codimagem != null ? codimagem.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Imagens)) {
            return false;
        }
        Imagens other = (Imagens) object;
        if ((this.codimagem == null && other.codimagem != null) || (this.codimagem != null && !this.codimagem.equals(other.codimagem))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.fander.model.Imagens[ codimagem=" + codimagem + " ]";
    }
    
}


Classe Repositório;
import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;

import br.com.fander.model.Imagens;

public class ImagensRepositorio implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private EntityManager manager;

	public Imagens porCodigo(int codigo) {
		return manager.find(Imagens.class, codigo);
	}

	
	public List<Imagens> todas() {
		return manager.createQuery("from Imagens", Imagens.class)
				.getResultList();
	}

	public Imagens guardar(Imagens imagem) {
		return manager.merge(imagem);
	}

	public void remove(Imagens imagem) {
		imagem = porCodigo(imagem.getCodimagem());
		manager.remove(imagem);
	}

}


Classe Serviço;
import java.io.Serializable;

import javax.inject.Inject;

import br.com.fander.model.Imagens;
import br.com.fander.repository.ImagensRepositorio;
import br.com.fander.util.Transacional;

public class ImagensService implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private ImagensRepositorio imagemRepositorio;

	@Transacional
	public void salvar(Imagens imagem) {
		imagemRepositorio.guardar(imagem);
	}

	@Transacional
	public void excluir(Imagens imagem) {
		imagemRepositorio.remove(imagem);
	}

}


Classe controle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.fander.model.Imagens;
import br.com.fander.repository.ImagensRepositorio;
import br.com.fander.service.ImagensService;
import br.com.fander.util.FacesMessages;

@Named
@ViewScoped
public class ConsultaImagensBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private ImagensRepositorio imagens;

	@Inject
	private ImagensService imagemServices;

	@Inject
	private FacesMessages messages;

	private List<Imagens> todasImagens = new ArrayList<Imagens>();
	private Imagens imagemEdicao = new Imagens();
	private Imagens imagemSelecionada;

	
	public void consultar (){
		todasImagens = imagens.todas();
	}
	
	
	
	public ImagensRepositorio getImagens() {
		return imagens;
	}

	public void setImagens(ImagensRepositorio imagens) {
		this.imagens = imagens;
	}

	public ImagensService getImagemServices() {
		return imagemServices;
	}

	public void setImagemServices(ImagensService imagemServices) {
		this.imagemServices = imagemServices;
	}

	public FacesMessages getMessages() {
		return messages;
	}

	public void setMessages(FacesMessages messages) {
		this.messages = messages;
	}

	public List<Imagens> getTodasImagens() {
		return todasImagens;
	}

	public void setTodasImagens(List<Imagens> todasImagens) {
		this.todasImagens = todasImagens;
	}

	public Imagens getImagemEdicao() {
		return imagemEdicao;
	}

	public void setImagemEdicao(Imagens imagemEdicao) {
		this.imagemEdicao = imagemEdicao;
	}

	public Imagens getImagemSelecionada() {
		return imagemSelecionada;
	}

	public void setImagemSelecionada(Imagens imagemSelecionada) {
		this.imagemSelecionada = imagemSelecionada;
	}

}


Baseado nesse padrão, como ficaria o meu xhtml usando por exemplo o p:galleria?


Quem poder me orientar, me dá esse suporte, ficarei muito grato!
André Dutra

André Dutra

Curtidas 0
POSTAR