Mega Code Archive

 
Categories / Java Tutorial / Hibernate
 

Listen to Session Event

File: Main.java import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.event.AutoFlushEvent; import org.hibernate.event.DeleteEvent; import org.hibernate.event.DirtyCheckEvent; import org.hibernate.event.EvictEvent; import org.hibernate.event.FlushEntityEvent; import org.hibernate.event.FlushEvent; import org.hibernate.event.InitializeCollectionEvent; import org.hibernate.event.LoadEvent; import org.hibernate.event.LockEvent; import org.hibernate.event.MergeEvent; import org.hibernate.event.PersistEvent; import org.hibernate.event.PostLoadEvent; import org.hibernate.event.PreLoadEvent; import org.hibernate.event.RefreshEvent; import org.hibernate.event.ReplicateEvent; import org.hibernate.event.SaveOrUpdateEvent; import org.hibernate.event.def.DefaultAutoFlushEventListener; import org.hibernate.event.def.DefaultDeleteEventListener; import org.hibernate.event.def.DefaultDirtyCheckEventListener; import org.hibernate.event.def.DefaultEvictEventListener; import org.hibernate.event.def.DefaultFlushEntityEventListener; import org.hibernate.event.def.DefaultFlushEventListener; import org.hibernate.event.def.DefaultInitializeCollectionEventListener; import org.hibernate.event.def.DefaultLoadEventListener; import org.hibernate.event.def.DefaultLockEventListener; import org.hibernate.event.def.DefaultMergeEventListener; import org.hibernate.event.def.DefaultPersistEventListener; import org.hibernate.event.def.DefaultPostLoadEventListener; import org.hibernate.event.def.DefaultPreLoadEventListener; import org.hibernate.event.def.DefaultRefreshEventListener; import org.hibernate.event.def.DefaultReplicateEventListener; import org.hibernate.event.def.DefaultSaveOrUpdateEventListener; import org.hibernate.mapping.Map; public class Main {   public static void main(String[] args) throws Exception {     HibernateUtil hibernateUtil = new HibernateUtil();     hibernateUtil         .executeSQLCommand("create table Product(id int, name varchar, description varchar, price decimal(6,2), supplierid int)");     hibernateUtil.executeSQLCommand("create table Supplier (id int , name varchar)");     hibernateUtil         .executeSQLCommand("create table Software(id int, name varchar, description varchar, price decimal(6,2), supplierid int, version varchar)");     hibernateUtil.getConfiguration().setListener("save-update", new MySaveOrUpdateEventListener());     // Apply this event listener (programmatically)     hibernateUtil.getConfiguration().setListener("auto-flush", new MyAutoFlushEventListener());     hibernateUtil.getConfiguration().setListener("delete", new MyDeleteEventListener());     hibernateUtil.getConfiguration().setListener("dirty-check", new MyDirtyCheckEventListener());     hibernateUtil.getConfiguration().setListener("evict", new MyEvictEventListener());     hibernateUtil.getConfiguration().setListener("flush-entity", new MyFlushEntityEventListener());     hibernateUtil.getConfiguration().setListener("flush", new MyFlushEventListener());     hibernateUtil.getConfiguration().setListener("load-collection",         new MyInitializeCollectionEventListener());     hibernateUtil.getConfiguration().setListener("load", new MyLoadEventListener());     hibernateUtil.getConfiguration().setListener("lock", new MyLockEventListener());     hibernateUtil.getConfiguration().setListener("merge", new MyMergeEventListener());     hibernateUtil.getConfiguration().setListener("persist", new MyPersistEventListener());     hibernateUtil.getConfiguration().setListener("post-load", new MyPostLoadEventListener());     hibernateUtil.getConfiguration().setListener("pre-load", new MyPreLoadEventListener());     hibernateUtil.getConfiguration().setListener("refresh", new MyRefreshEventListener());     hibernateUtil.getConfiguration().setListener("replicate", new MyReplicateEventListener());     hibernateUtil.getConfiguration().setListener("save-update", new MySaveOrUpdateEventListener());     Session session = hibernateUtil.getConfiguration().buildSessionFactory().openSession();     Supplier superCorp = new Supplier();     superCorp.setName("Supplier1");     session.save(superCorp);     Supplier megaInc = new Supplier();     megaInc.setName("Supplier2");     session.save(megaInc);     Product mouse = new Product("Product1", "first product", 20.0);     mouse.setSupplier(superCorp);     superCorp.getProducts().add(mouse);     session.flush();     Product mouse2 = new Product("Product2", "second product", 22.0);     mouse2.setSupplier(superCorp);     superCorp.getProducts().add(mouse2);     Product keyboard = new Product("Product3", "third product", 30.0);     keyboard.setSupplier(megaInc);     megaInc.getProducts().add(keyboard);     Software webBrowser = new Software("Web Browser", "new browser", 75.0, "2.0");     webBrowser.setSupplier(superCorp);     superCorp.getProducts().add(webBrowser);     Software email = new Software("Email", "email client", 49.99, "4.1 Edition");     email.setSupplier(megaInc);     megaInc.getProducts().add(email);     session.flush();     session.close();     hibernateUtil.checkData("select * from Product");     hibernateUtil.checkData("select * from Software");     hibernateUtil.checkData("select * from Supplier");   } } class MySaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener {   public void onSaveOrUpdate(SaveOrUpdateEvent event) {     System.out.println(event.getEntity());     super.onSaveOrUpdate(event);   } } class MyAutoFlushEventListener extends DefaultAutoFlushEventListener {   public void onAutoFlush(AutoFlushEvent event) throws HibernateException {     System.out.println("AutoFlushEventListener.onAutoFlush(AutoFlushEvent)");     super.onAutoFlush(event);   } } class MyDeleteEventListener extends DefaultDeleteEventListener {   public void onDelete(DeleteEvent event) throws HibernateException {     System.out.println("DeleteEventListener.onDelete(DeleteEvent)");     super.onDelete(event);   } } class MyDirtyCheckEventListener extends DefaultDirtyCheckEventListener {   public void onDirtyCheck(DirtyCheckEvent event) {     System.out.println("DirtyCheckEventListener.onDirtyCheck(DirtyCheckEvent)");     super.onDirtyCheck(event);   } } class MyEvictEventListener extends DefaultEvictEventListener {   public void onEvict(EvictEvent event) throws HibernateException {     System.out.println("EvictEventListener.onEvict(EvictEvent)");     super.onEvict(event);   } } class MyFlushEntityEventListener extends DefaultFlushEntityEventListener {   public void onFlushEntity(FlushEntityEvent event) throws HibernateException {     System.out.println("FlushEntityEventListener.onFlushEntity(FlushEntityEvent)");     super.onFlushEntity(event);   } } class MyFlushEventListener extends DefaultFlushEventListener {   public void onFlush(FlushEvent event) throws HibernateException {     System.out.println("FlushEventListener.onFlush(FlushEvent)");     super.onFlush(event);   } } class MyInitializeCollectionEventListener extends DefaultInitializeCollectionEventListener {   public void onInitializeCollection(InitializeCollectionEvent event) throws HibernateException {     System.out         .println("InitializeCollectionEventListener.onInitializeCollection(InitializeCollectionEvent)");     super.onInitializeCollection(event);   } } class MyLoadEventListener extends DefaultLoadEventListener {   public void onLoad(LoadEvent event, LoadType type) throws HibernateException {     System.out.println("LoadEventListener.onLoad(LoadEvent,LoadType)");     super.onLoad(event, type);   } } class MyLockEventListener extends DefaultLockEventListener {   public void onLock(LockEvent event) throws HibernateException {     System.out.println("LockEventListener.onLock(LockEvent)");     super.onLock(event);   } } class MyMergeEventListener extends DefaultMergeEventListener {   public void onMerge(MergeEvent event, Map copiedAlready) {     System.out.println("MergeEventListener.onMerge(MergeEvent,Map)");     // super.onMerge(event, copiedAlready);   }   public void onMerge(MergeEvent event) throws HibernateException {     System.out.println("MergeEventListener.onMerge(MergeEvent)");     super.onMerge(event);   } } class MyPersistEventListener extends DefaultPersistEventListener {   public void onPersist(PersistEvent event, Map createdAlready) throws HibernateException {     System.out.println("PersistEventListener.onPersist(PersistEvent,Map)");     // super.onPersist(event, createdAlready);   }   public void onPersist(PersistEvent event) throws HibernateException {     System.out.println("PersistEventListener.onPersist(PersistEvent)");     super.onPersist(event);   } } class MyPostLoadEventListener extends DefaultPostLoadEventListener {   public void onPostLoad(PostLoadEvent event) {     System.out.println("PostLoadEventListener.onPostLoad(onPostLoad)");     super.onPostLoad(event);   } } class MyPreLoadEventListener extends DefaultPreLoadEventListener {   public void onPreLoad(PreLoadEvent event) {     System.out.println("PreLoadEventListener.onPreLoad(PreLoadEvent)");     super.onPreLoad(event);   } } class MyRefreshEventListener extends DefaultRefreshEventListener {   public void onRefresh(RefreshEvent event) throws HibernateException {     System.out.println("RefreshEventListener.onRefresh(RefreshEvent)");     super.onRefresh(event);   } } class MyReplicateEventListener extends DefaultReplicateEventListener {   public void onReplicate(ReplicateEvent event) throws HibernateException {     System.out.println("ReplicateEventListener.onReplicate(ReplicateEvent)");     super.onReplicate(event);   } } class NoisySaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener {   public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {     System.out.println("SaveOrUpdateEventListener.onSaveOrUpdate(SaveOrUpdateEvent)");     super.onSaveOrUpdate(event);   } }