package com.dineshonjava.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import com.sdnext.hibernate.tutorial.dto.Employee;
public class HibernateTestDemo {
private static SessionFactory sessionFactory = createSessionFactory();
/**
* @param args
*/
public static void main(String[] args)
{
Employee employee = null;
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
employee = (Employee) session.get(Employee.class, 1);
//get employee object with id 1
System.out.println(employee);
//update employee address of retrieved object, it immediately update to DB because of get method retrieved actual persistent object
employee.setAddress("Noida");
//Here we have updated object
System.out.println(employee);
transaction.commit();
session.close();
sessionFactory.close();
}
private static SessionFactory createSessionFactory() {
if (sessionFactory == null) {
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();
sessionFactory = metaData.getSessionFactoryBuilder().build();
}
return sessionFactory;
}
}
...................................... ................................. Jan 31, 2017 10:42:58 PM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4 Jan 31, 2017 10:42:58 PM org.hibernate.boot.internal.SessionFactoryBuilderImpl$SessionFactoryOptionsStateStandardImplWARN: Unrecognized hbm2ddl_auto value : create | update. Supported values include create, create-drop, update, and validate. Ignoring Hibernate: select employee0_.EMPID as EMPID1_0_0_, employee0_.ADDRESS as ADDRESS2_0_0_, employee0_.EMP_NAME as EMP_NAME3_0_0_ from EMPLOYEE employee0_ where employee0_.EMPID=? Employee [empid=1, empname=Dinesh Rajput, address=New Delhi] Employee [empid=1, empname=Dinesh Rajput, address=Noida] Hibernate: update EMPLOYEE set ADDRESS=?, EMP_NAME=? where EMPID=? ...................... ......................
...................................... ................................. WARN: Unrecognized hbm2ddl_auto value : create | update. Supported values include create, create-drop, update, and validate. Ignoring Hibernate: select employee0_.EMPID as EMPID1_0_0_, employee0_.ADDRESS as ADDRESS2_0_0_, employee0_.EMP_NAME as EMP_NAME3_0_0_ from EMPLOYEE employee0_ where employee0_.EMPID=? null ...................... ......................
package com.dineshonjava.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import com.sdnext.hibernate.tutorial.dto.Employee;
public class HibernateTestDemo {
private static SessionFactory sessionFactory = createSessionFactory();
/**
* @param args
*/
public static void main(String[] args)
{
Employee employee = null;
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
employee = (Employee) session.load(Employee.class, 1);
//get employee object with id 1
System.out.println(employee);
//if object found then update employee address of retrieved the proxy object instead of original object i.e. it does not update to DB
employee.setAddress("Noida");
transaction.commit();
session.close();
sessionFactory.close();
}
private static SessionFactory createSessionFactory() {
if (sessionFactory == null) {
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();
sessionFactory = metaData.getSessionFactoryBuilder().build();
}
return sessionFactory;
}
}
...................................... ................................. WARN: Unrecognized hbm2ddl_auto value : create | update. Supported values include create, create-drop, update, and validate. Ignoring Hibernate: select employee0_.EMPID as EMPID1_0_0_, employee0_.ADDRESS as ADDRESS2_0_0_, employee0_.EMP_NAME as EMP_NAME3_0_0_ from EMPLOYEE employee0_ where employee0_.EMPID=? Employee [empid=1, empname=Dinesh Rajput, address=Noida] ...................... ......................
...................................... ................................. WARN: Unrecognized hbm2ddl_auto value : create | update. Supported values include create, create-drop, update, and validate. Ignoring Hibernate: select employee0_.EMPID as EMPID1_0_0_, employee0_.ADDRESS as ADDRESS2_0_0_, employee0_.EMP_NAME as EMP_NAME3_0_0_ from EMPLOYEE employee0_ where employee0_.EMPID=? Exception in thread "main" org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.sdnext.hibernate.tutorial.dto.Employee#4] at org.hibernate.boot.internal.StandardEntityNotFoundDelegate.handleEntityNotFound(StandardEntityNotFoundDelegate.java:28) at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:242) at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:159) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:266) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:68) at com.sdnext.hibernate.tutorial.dto.Employee_$$_jvstc72_0.toString(Employee_$$_jvstc72_0.java) at java.lang.String.valueOf(Unknown Source) at java.io.PrintStream.println(Unknown Source) at com.sdnext.hibernate.tutorial.HibernateTestDemo.main(HibernateTestDemo.java:34) ...................... ......................
Labels: Hibernate, interview questions