Select Java Mysql JPA (Java Persistence Api)

Java

Como hemos visto en entradas anteriores JPA es una api que nos permite de forma mucho mas optima, elegante, potente y fácil el manejo de la lógica de negocio de nuestras aplicaciones, en esta entrada veremos como podemos hacer un SELECT desde nuestro código JAVA (Select Java Mysql) haciendo uso de esta api, con la particularidad que nuestro select nos devolverá la entidad de una tabla Clientes en caso de encontrarla en la base de datos o nos devolverá null en caso de no encontrar nada, así:

Select Java Mysql JPA (Java Persistence Api)

1
2
3
4
5
6
7
8
9
10
11
12
13
 public Clientes getCliente(String ide){
EntityManager em=getEntityManager();
Clientes cli=null;
Query q=em.createQuery("SELECT c FROM Clientes c WHERE c.identificacion=:i");
q.setParameter("i", ide); //Pasamos el parámetro
List result = q.getResultList();
if(!result.isEmpty()){
cli = result.get(0); //Si no está vacía retornamos el valor a la variable cli.
}else{
cli = null; //Devolvemos null si la lista que obtenemos está vacía
}
return cli;
}

Para tener una vista general acerca del ejemplo podríamos manejar una entidad cliente mas o menos con esta estructura:

1
2
3
4
5
/*
* 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 Entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlTransient;

/**
*
* @author Ivan
*/
@Entity
@Table(name = “clientes”)
public class Clientes implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = “id”)
private Integer id;
@Column(name = “identificacion”)
private String identificacion;
@Column(name = “nombres”)
private String nombres;
@Column(name = “apellidos”)
private String apellidos;
@Column(name = “fecha_nac”)
@Temporal(TemporalType.DATE)
private Date fechaNac;
@Column(name = “direccion”)
private String direccion;
@Column(name = “ocupacion”)
private String ocupacion;
@Column(name = “telefono”)
private String telefono;
@Column(name = “email”)
private String email;
@Column(name = “estado”)
private Character estado;

public Clientes() {
}

public Clientes(Integer id) {
this.id = id;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getIdentificacion() {
return identificacion;
}

public void setIdentificacion(String identificacion) {
this.identificacion = identificacion;
}

public String getNombres() {
return nombres;
}

public void setNombres(String nombres) {
this.nombres = nombres;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public Date getFechaNac() {
return fechaNac;
}

public void setFechaNac(Date fechaNac) {
this.fechaNac = fechaNac;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

public String getOcupacion() {
return ocupacion;
}

public void setOcupacion(String ocupacion) {
this.ocupacion = ocupacion;
}

public String getTelefono() {
return telefono;
}

public void setTelefono(String telefono) {
this.telefono = telefono;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public Character getEstado() {
return estado;
}

public void setEstado(Character estado) {
this.estado = estado;
}

@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.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 Clientes)) {
return false;
}
Clientes other = (Clientes) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}

@Override
public String toString() {
return “Entidades.Clientes[ id=” + id + ” ]”;
}

}

La ventaja de manejar de esta forma este tipo de consultas es la posibilidad de hacer validaciones sobre los datos recibidos de forma inmediata haciendo uso de la POO, una de las grandes ventajas de programar aplicaciones JAVA con JPA.

¡Suscríbete a mi canal, para acceder a más contenidos gratuitos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *