Hi,
I am using hibernate 4.X and Oracle XE.
You can set interceptor on a
session or on a
SessionFactory.
for sessionfactory use
new Configuration().setInterceptor( new NullInterceptor() );
for session use
Code:
SessionBuilder sessionbuilder =new Configuration(). configure().buildSessionFactory().
withOptions();
sessionbuilder.interceptor(interceptor);
Here is a simple example
Code:
package com.akash.interceptor;
import java.io.Serializable;
import org.hibernate.EmptyInterceptor;
import org.hibernate.type.Type;
import com.akash.domain.User;
public class NullInterceptor extends EmptyInterceptor{
private static final long serialVersionUID = 1L;
@Override
public boolean onSave(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
System.out.println("On Save Interceptor");
if(null==entity||!(entity instanceof User))
return false;
System.out.println(entity.toString());
User user =(User) entity;
if(user.getFirstName().toString().isEmpty())
user.setFirstName("default");
return true;
}
}
Then apply this interceptor in main
Code:
package com.akash.domain;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionBuilder;
import org.hibernate.cfg.Configuration;
import com.akash.domain.User;
import com.akash.interceptor.NullInterceptor;
import com.akash.util.Hibernate4DaoFactory;
import com.akash.util.Hibernate4Util;
public class MainClient {
public static void main(String[] args) {
User user = new User(12L, "Sarah", "Williams");
User user1 = new User(13L, "Wiliiam", "Parker");
User user2= new User(14L, "James", "Gostling");
NullInterceptor interceptor = new NullInterceptor();
SessionBuilder sessionbuilder =new Configuration(). configure().buildSessionFactory().
withOptions();
sessionbuilder.interceptor(interceptor);
Session session =sessionbuilder.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}
}