Olá pessoal,
Estou iniciando em um novo projeto na minha empresa e irei trabalhar com alguns padrões já implantados, só que até o momento eu não tinha conhecimento dos mesmo e visualizando o código tive algumas dúvidas em questão de como eles estão tratando a comunicação com o BD através do java.
Olhando o código abaixo, percebi que as buscas de dados nos BD são feitas através das entidades, sem que haja a necessidade de se criar uma query em sql, essa minha dedução foi certa?
Se realmente for dessa forma que eu entendi, seria possível fazer dessa forma a busca e o cruzamento de dados de 2 ou mais bancos de dados diferentes utilizando esse mesmo padrão?
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.**.cima.entity;
import entidade.SuperLogicLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author
*/
@Entity
@Table(name = "Incidencia")
@XmlRootElement
public class Incidencia extends SuperLogicLocal implements Serializable {
@Basic(optional = false)
@NotNull
@Temporal(TemporalType.TIMESTAMP)
private Date dataIncidencia;
@Basic(optional = false)
@NotNull
@Size(max = 254)
private String nomeUsuario;
@Basic(optional = false)
@NotNull
@Size(max = 254)
private String email;
@Temporal(TemporalType.TIMESTAMP)
private Date elaboracaoRel;
@Size(max = 20)
@Column(length = 20)
private String telefone;
@Size(max = 20)
@Column(length = 20)
@Basic(optional = false)
@NotNull
private String numIncidencia;
@Size(max = 20)
@Column(length = 20)
private String unidade;
private Boolean recebimento;
private Boolean transporte;
private Boolean operacao;
private Boolean instalacao;
private Boolean outro;
@Size(max = 254)
private String outroDescricao;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "incidencia", orphanRemoval = true)
private List<IncidenciaMaterial> incidenciaMaterials;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "incidencia", orphanRemoval = true)
private List<IncidenciaEmpreiteira> incidenciaEmpreiteiras;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "incidencia", orphanRemoval = true)
private List<Defeito> defeitos;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "incidencia", orphanRemoval = true)
private List<AnaliseFinal> analiseFinals;
public Date getDataIncidencia() {
if (dataIncidencia == null) {
dataIncidencia = new Date();
}
return dataIncidencia;
}
public void setDataIncidencia(Date dataIncidencia) {
this.dataIncidencia = dataIncidencia;
}
public String getNomeUsuario() {
return nomeUsuario;
}
public void setNomeUsuario(String nomeUsuario) {
this.nomeUsuario = nomeUsuario;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getElaboracaoRel() {
return elaboracaoRel;
}
public void setElaboracaoRel(Date elaboracaoRel) {
this.elaboracaoRel = elaboracaoRel;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getNumIncidencia() {
return numIncidencia;
}
public void setNumIncidencia(String numIncidencia) {
this.numIncidencia = numIncidencia;
}
public String getUnidade() {
return unidade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
public Boolean getRecebimento() {
return recebimento;
}
public void setRecebimento(Boolean recebimento) {
this.recebimento = recebimento;
}
public Boolean getTransporte() {
return transporte;
}
public void setTransporte(Boolean transporte) {
this.transporte = transporte;
}
public Boolean getOperacao() {
return operacao;
}
public void setOperacao(Boolean operacao) {
this.operacao = operacao;
}
public Boolean getInstalacao() {
return instalacao;
}
public void setInstalacao(Boolean instalacao) {
this.instalacao = instalacao;
}
public Boolean getOutro() {
return outro;
}
public void setOutro(Boolean outro) {
this.outro = outro;
}
public String getOutroDescricao() {
return outroDescricao;
}
public void setOutroDescricao(String outroDescricao) {
this.outroDescricao = outroDescricao;
}
public List<IncidenciaMaterial> getIncidenciaMaterials() {
if (incidenciaMaterials == null) {
incidenciaMaterials = new ArrayList<>();
}
return incidenciaMaterials;
}
public void setIncidenciaMaterials(List<IncidenciaMaterial> incidenciaMaterials) {
this.incidenciaMaterials = incidenciaMaterials;
}
public List<IncidenciaEmpreiteira> getIncidenciaEmpreiteiras() {
if(incidenciaEmpreiteiras == null){
incidenciaEmpreiteiras = new ArrayList<>();
}
return incidenciaEmpreiteiras;
}
public void setIncidenciaEmpreiteiras(List<IncidenciaEmpreiteira> incidenciaEmpreiteiras) {
this.incidenciaEmpreiteiras = incidenciaEmpreiteiras;
}
public List<Defeito> getDefeitos() {
if(defeitos == null){
defeitos = new ArrayList<>();
}
return defeitos;
}
public void setDefeitos(List<Defeito> defeitos) {
this.defeitos = defeitos;
}
public List<AnaliseFinal> getAnaliseFinals() {
if(analiseFinals == null){
analiseFinals = new ArrayList<>();
}
return analiseFinals;
}
public void setAnaliseFinals(List<AnaliseFinal> analiseFinals) {
this.analiseFinals = analiseFinals;
}
@Override
public int hashCode() {
int hash = *;
hash = ** * hash + Objects.hashCode(this.dataIncidencia);
hash = ** * hash + Objects.hashCode(this.nomeUsuario);
hash = ** * hash + Objects.hashCode(this.email);
hash = ** * hash + Objects.hashCode(this.elaboracaoRel);
hash = ** * hash + Objects.hashCode(this.telefone);
hash = ** * hash + Objects.hashCode(this.numIncidencia);
hash = ** * hash + Objects.hashCode(this.unidade);
hash = ** * hash + Objects.hashCode(this.recebimento);
hash = ** * hash + Objects.hashCode(this.transporte);
hash = ** * hash + Objects.hashCode(this.operacao);
hash = ** * hash + Objects.hashCode(this.instalacao);
hash = ** * hash + Objects.hashCode(this.outro);
hash = ** * hash + Objects.hashCode(this.outroDescricao);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Incidencia other = (Incidencia) obj;
if (!Objects.equals(this.nomeUsuario, other.nomeUsuario)) {
return false;
}
if (!Objects.equals(this.email, other.email)) {
return false;
}
if (!Objects.equals(this.telefone, other.telefone)) {
return false;
}
if (!Objects.equals(this.numIncidencia, other.numIncidencia)) {
return false;
}
if (!Objects.equals(this.unidade, other.unidade)) {
return false;
}
if (!Objects.equals(this.outroDescricao, other.outroDescricao)) {
return false;
}
if (!Objects.equals(this.dataIncidencia, other.dataIncidencia)) {
return false;
}
if (!Objects.equals(this.elaboracaoRel, other.elaboracaoRel)) {
return false;
}
if (!Objects.equals(this.recebimento, other.recebimento)) {
return false;
}
if (!Objects.equals(this.transporte, other.transporte)) {
return false;
}
if (!Objects.equals(this.operacao, other.operacao)) {
return false;
}
if (!Objects.equals(this.instalacao, other.instalacao)) {
return false;
}
if (!Objects.equals(this.outro, other.outro)) {
return false;
}
return true;
}
}
Ps: Onde tem ** foi substituído apenas por questão de privacidade.