Delete do Hibernate muito lento. DeleteById usando HQL

Olá pessoal. Estou fazendo alguns testes de performance com o Hibernate e reparei que se eu tetar fazer um delete de um objeto somente com id e com todos os outros nulos tenho que fazer um get do objeto para depois deletá-lo. O hibernate faz um select e depois faz um delete. Eu sei que quando os outros campos estão marcados como not-null ele é obrigado a fazer um get do objeto, mas sinceramente eu não entendo o porque disso.Com o hql que estou usando agora ele faz um delete sem select antes, porem é muito lento chegando a quase 2 segundos para um registro apenas. Isso é normal ? Quando mandei deletar todos os 40976 registros ele demorou somente 4 segundos.


 protected Session getSession() {
		  
	     return HibernateUtil.getInstance().getSession();
}
 
private Session session

public void deleteText(int id) {
		Session s = getSession();
		try {
			s.createQuery("delete from Text text where text.oldId= :id")
					.setParameter("id", id).executeUpdate();
			s.getTransaction().commit();
		} catch (HibernateException e) {
			s.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			s.close();
		}
	}

Hibernate Util

[code]public class HibernateUtil {

private static HibernateUtil me;
private static SessionFactory sessionFactory = getSessionFactory();


protected static SessionFactory getSessionFactory() {
	try {
		
		return new Configuration().configure().buildSessionFactory();
		
	} catch (Exception e) {
		throw new IllegalStateException(
				"Could not locate SessionFactory in JNDI");
	}
}

public Session getSession() {
	Session toReturn = sessionFactory.openSession();
	toReturn.beginTransaction();
	return toReturn;
}

public static HibernateUtil getInstance() {
	if (me == null) {
		me = new HibernateUtil();
	}
	return me;
}[/code]