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.

Main.java
public 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();
Volver a: Hibernate

Aviso Legal | Pol铆tica de privacidad