/////////////////////////////////////////////////////////////////////////
import java.io.Serializable;
import java.util.*;
import java.sql.*;
import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.criterion.*;
import org.hibernate.event.*;
import org.hibernate.event.def.*;
public class Main {
public static void main(String[] args) throws Exception {
HibernateUtil.setup("create table User ( id int, username VARCHAR);");
Configuration config = new Configuration();
config.setListener("save-update", new UseringSaveOrUpdateEventListener());
SessionFactory factory = config.configure().buildSessionFactory();
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(new User("R1"));
session.saveOrUpdate(new User("R2"));
tx.commit();
session.close();
}
}
class UseringSaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener
{
public Serializable onSaveOrUpdate(SaveOrUpdateEvent event)
throws HibernateException {
if( event.getObject() instanceof User ) {
User user = (User)event.getObject();
System.out.println("Preparing to save or update user " + user.getUsername());
if( user.getUsername().equalsIgnoreCase("R1")) {
System.out.println("Conventional user not recorded.");
// Here we prevent the invocation
// of saveOrUpdate on the Session from having
// any effect on the database!
return null;
}
}
return super.onSaveOrUpdate(event);
}
}
/////////////////////////////////////////////////////////////////////////
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="username" type="string" length="32"/>
</class>
</hibernate-mapping>
/////////////////////////////////////////////////////////////////////////
public class User
{
private int id;
private String username;
public User(){
}
public User(String u){
username = u;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
}
|