package org.example;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
public class Main
{
public static void main(String[] args)
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager entityManager = emf.createEntityManager();
entityManager.getTransaction().begin();
UserInfo userInfo = new UserInfo();
userInfo.setUserName("User 1");
userInfo.setHappy(true);
userInfo.setStatus(Status.SINGLE);
entityManager.persist(userInfo);
entityManager.getTransaction().commit();
UserInfo info = entityManager.find(UserInfo.class,1);
System.out.println(info);
entityManager.close();
}
}
public enum Status {
SINGLE, COMMITTED, MARRIED
}
public class Main
{
public static void main(String[] args)
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager entityManager = emf.createEntityManager();
entityManager.getTransaction().begin();
UserInfo userInfo = new UserInfo();
userInfo.setUserName("User 1");
userInfo.setHappy(true);
userInfo.setStatus(Status.SINGLE);
entityManager.persist(userInfo);
entityManager.getTransaction().commit();
UserInfo info = entityManager.find(UserInfo.class,1);
System.out.println(info);
entityManager.close();
}
}
Persistence.xml :
<persistence xmlns="https://jakarta.ee/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd">
<persistence-unit name="my-persistence-unit">
<description>JPA In Action</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name = "jakarta.persistence.jdbc.url"
value = "jdbc:mysql://localhost/JPA-In-Action"/>
<property name = "jakarta.persistence.jdbc.user" value = "root"/>
<property name="jakarta.persistence.jdbc.password" value="1234"/>
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
pom.xml :
<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>org.example</groupId>
<artifactId>JPA-In-Action</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JPA-In-Action</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>19</maven.compiler.source>
<maven.compiler.target>19</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.1.7.Final</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Output :
Hibernate: insert into user (happy, status, name) values (?, ?, ?)
Hibernate: select u1_0.id,u1_0.happy,u1_0.status,u1_0.name from user u1_0 where u1_0.id=?
org.example.UserInfo@22ad1bae
I was expecting to see that 'status' and 'name' would be fetched Lazily from the database. But, as per the query in the output, it is not getting fetched lazily , despite the fact I have stated @Basic(fetch = FETCHTYPE.LAZY) above a String and a enum field. I am using Hibernate (version : 6.1.7.Final) as the JPA implementation
I have tired by inserting @Lob annotation and also by putting @Basic(fetch = FETCHTYPE.LAZY) on method of getters and setters. None of them worked.
Can anyone please help me out with this ?