public void execute() throws HibernateException {
EntityPersister persister = getPersister();
SessionImplementor session = getSession();
Object instance = getInstance();
PreInsertEvent preEvent = new PreInsertEvent( instance, null, state, persister, session );
final boolean veto = session.getListeners().getPreInsertEventListener().onPreInsert( preEvent );
if ( !veto ) generatedId = persister.insert( state, instance, session );
PostInsertEvent postEvent = new PostInsertEvent( instance, generatedId, state, getPersister(), session );
session.getListeners().getPostInsertEventListener().onPostInsert( postEvent );
if ( getSession().getFactory().getStatistics().isStatisticsEnabled() && !veto ) {
getSession().getFactory().getStatisticsImplementor()
.insertEntity( getPersister().getEntityName() );
}
}