JPA (Java Persistence)

Es una especificación standard de la industria del desarrollo con Java para manipular una base de datos relacional utilizando la programación orientada a objetos como aproximación.

Al ser una especificación, por sí sola no puede manipular la base de datos. Es un conjunto de interfaces que deben ser implementadas.

Descargar recurso
Main.javapublic class Main {
    public static void main(String[] args){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("TEST_PERSISTENCE_JPA");
        EntityManager em = emf.createEntityManager();
      
        Customer customer=new Customer("Pablo", "Monteserín");        
        Address address=new Address("Calle Falsa 123");
        customer.setAddress(address);
        
        try {
            em.getTransaction().begin();
            em.persist(customer);
            em.getTransaction().commit();

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            em.close();
        }
    }
}
src/main/resources/META-INF/persistence.xml<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
	xmlns="http://xmlns.jcp.org/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="TEST_PERSISTENCE_JPA"
		transaction-type="RESOURCE_LOCAL">
		<class>com.pablo.clase.persistence.model.Customer</class>
		<class>com.pablo.clase.persistence.model.Address</class>

		<properties>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/prueba-jpa?serverTimezone=UTC" />
			<property name="javax.persistence.jdbc.user" value="pm" />
			<property name="javax.persistence.jdbc.password" value="pp" />

			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />

			<!-- hace cambios -->
			<property name="hibernate.hbm2ddl.auto" value="update" />

			<!-- si los cambios los fastidian todo, no hace cambios -->
			<!-- <property name="hibernate.hbm2ddl.auto" value="validate" /> -->

			<!-- <property name="hibernate.hbm2ddl.auto" value="create-drop" /> -->
			<property name="show_sql" value="true" />
		</properties>
	</persistence-unit>
</persistence>
pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pablo.clase</groupId>
    <artifactId>solo-jpa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <hibernate.version>5.4.2.Final</hibernate.version>
        <spring.version>5.1.7.RELEASE</spring.version>
        <jstl.version>1.2</jstl.version>
        <servletapi.version>4.0.1</servletapi.version>
    </properties>

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
    </dependency>
</dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Otras operaciones

Consulta de un solo objeto

TypedQuery<Usuario> query = em.createQuery("SELECT u from Usuario u WHERE u.nombre=:name AND u.pass=:password", Usuario.class);
query.setParameter("name", nombre);
query.setParameter("password", password);

Update

em.merge(usuario);

Remove

Invitado invitado = em.find(Invitado.class, id);
em.remove(invitado);

Consulta de un listado de objetos

Query query = em.createQuery("SELECT c from Customer;
List<Customer> result=query.getResultList();
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!