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.
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();
}