Como fazer inserções em massa no hibernate?

ola pessoal tenho um arquivo texto que envio para o servidor contendo uma lista de usuarios e seus campos separados por | . quando vou salvar na tabela não salva mais que 20 usuarios porque? o que eu estou fazendo é ler a linha , quebrar para variaveis, criar um objeto ,pegar as variaveis e jogar para o objeto, criar o DAO e chamar o metodo que salva que esta desta maneira


...

protected static Session session = null;

public GenericDAO() {
        session = HibernateUtil.getSession();
    }

public boolean update(Object objeto) {
        boolean retorno = false;
        try {
            HibernateUtil.beginTransaction();
            session.saveOrUpdate(objeto);
            session.flush();
            HibernateUtil.commitTransaction();
            retorno = true;
        } catch (HibernateException ex) {
            HibernateUtil.rollbackTransaction();            
            throw ex;
        } catch (Exception ex) {
            HibernateUtil.rollbackTransaction();            
            System.out.println(ex);
        } finally {
            HibernateUtil.closeSession();
        }
        return retorno;
    }

esta passando neste codigo para cada linha seria o correto?

Poste seu hibernate.cfg.xml.

http://www.hibernate.org/hib_docs/v3/reference/en-US/html/batch.html

eu não tenho este xml, minha configuração não é feita via xml eu tenho um HibernateUtil com AnnotationConfiguration

você deve ter algum arquivo .cfg.xml ou entao o hibernate.properties

Olha na casse que inicia o SessionFactory, olha qual arquivo ele está lendo (se não tiver nada, então ele procura o hibernate.cfg.xml na raiz do projeto).

utilizei este conceito

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
   
for ( int i=0; i<100000; i++ ) {
    Customer customer = new Customer(.....);
    session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}
   
tx.commit();
session.close();

mas tbm não funcionou :?

tenho 30 para ser gravado e so grava 20. coloquei try catch e não gerou erro nem na saida do servidor com printStackTrace() tbm não acusou nada depurando percebi que passa pelo 20 e grava no proximo ele passa mas não grava

acima do codigo abaixo controi uma lista de eleitores para que sejam persistidos no banco o codigo que salva é este

...
ArrayList<Eleitor> eleitores = new ArrayList<Eleitor>();
...
try {
            Session session = HibernateUtil.getSession();
            HibernateUtil.beginTransaction();            
            for (Eleitor eleitorSalvar : eleitores) {
                session.saveOrUpdate(eleitorSalvar);                
            }
            HibernateUtil.commitTransaction();
            session.close();
        } catch (Exception e) {
            System.out.println(e);
        }

o size do arraylist no foreach é 30 certinho mas só salva 20 pq?!!! :?

eu estou achando que deve haver alguma configuração que eu não tenha, que libera para inserir mais ou sei lá?!
vejam minha configuração

AnnotationConfiguration configuration = new AnnotationConfiguration();
            configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
            configuration.setProperty("hibernate.connection.url", "jdbc:mysql://ip:3306/Projeto");
            configuration.setProperty("hibernate.connection.username", "user");
            configuration.setProperty("hibernate.connection.password", "password");
            configuration.setProperty("hibernate.order_updates", "true");
            configuration.setProperty("hibernate.show_sql", "false");
            configuration.setProperty("hibernate.format_sql", "true");
            configuration.setProperty("hibernate.hbm2ddl.auto", "update");

alguem conhece?

desta forma deu certo

Session session = HibernateUtil.getSession();
        HibernateUtil.beginTransaction();
        try {
            for (Eleitor eleitorSalvar : eleitores) {
                session.saveOrUpdate(eleitorSalvar);                
            }
            HibernateUtil.commitTransaction();
        } catch (Exception e) {
            HibernateUtil.rollbackTransaction();
            throw e;
        } finally {
            session.close();
        }