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