Hibernate Avancado(Desempenho)

4 respostas
A

Estou trocando de xml para as configuracoes diretamente no codigo.
Segue abaixo a configuracao. Caso alguem se interesse também.

sessionFactory = new AnnotationConfiguration()
             .addAnnotatedClass(net.divulgacao.sistemaj.bean.PessoaFisica.class)
                .addAnnotatedClass(net.divulgacao.sistemaj.bean.PessoaResidencial.class)
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
                .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
                .setProperty("hibernate.connection.url", "jdbc:mysql://localhost/")
                .setProperty("hibernate.connection.username", "root")
                .setProperty("hibernate.connection.password", "div")
                .setProperty("hibernate.show_sql", "true")
                .setProperty("hibernate.format_sql", "true")

                .setProperty("hibernate.c3p0.acquire_increment", "1")
                        // seconds
                .setProperty("hibernate.c3p0.idle_test_period", "100")
                .setProperty("hibernate.c3p0.max_size", "10")
                .setProperty("hibernate.c3p0.max_statements", "0")
                .setProperty("hibernate.c3p0.min_size", "5")
                        // seconds
                .setProperty("hibernate.c3p0.timeout", "100")
                .buildSessionFactory();

Minhas perguntas sao basicas.

    • Existe diferenca na peformance com o uso no .java ao inves do .xml?
    • E tem como eu apontar um package e usar todos aqueles bean como entity, ao inves de apontar um a um?
    • Reparei na documentacao. Que eles fazem o uso do .addPackage(“net.divulgacao.sistemaj.bean”)
      e do .addAnnotatedClass(PessoaFisica.class) , mas eu testei somente com os nomes da classes (.addAnnotatedClass(PessoaFisica.class)) e nao coloquei o .addPackage(“net.divulgacao.sistemaj.bean”) e funcionou perfeitamente. Será que isso é para perfomance?

[]'s

4 Respostas

Mauricio_Linhares

Rapaz, a performance da inicialização da configuração é o menor dos seus problemas. Você tem que procurar melhorar é a performance das queries, que essas sim vão dar trabalho.

A

Fala Mauricio…
Eu uso hibernate, acho que as queries deixo com eles.
Brincadeira…rs

Mais pode responde esssa duvida?
2) - E tem como eu apontar um package e usar todos aqueles bean como entity, ao inves de apontar um a um?

plentz
afsrj:
2) - E tem como eu apontar um package e usar todos aqueles bean como entity, ao inves de apontar um a um?

Não.

afsrj:
3) - Reparei na documentacao. Que eles fazem o uso do .addPackage("net.divulgacao.sistemaj.bean") e do .addAnnotatedClass(PessoaFisica.class) , mas eu testei somente com os nomes da classes (.addAnnotatedClass(PessoaFisica.class)) e nao coloquei o .addPackage("net.divulgacao.sistemaj.bean") e funcionou perfeitamente. Será que isso é para perfomance?

[]'s

Não. O addPackage não significa que todas as classes daquela package vão ser adicionados. Significa que as anotações de package vão ser lidas. (package-info.java)

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#setup-configuration

Mas tu pode usar um truquezinho que eu já usei pra facilitar a vida...

public class HibernateSessionFactory {
	static {
		try {
			configuration = new AnnotationConfiguration();
			for(Class clazz : getClasses("org.vraptor.mydvds.model")){
				configuration.addAnnotatedClass(clazz);
			}
			configuration.configure();
			sessionFactory = configuration.buildSessionFactory();
		} catch (Throwable ex) {
			logger.fatal("Something happened here!!! 8-O", ex);
			throw new ExceptionInInitializerError(ex);
		}
	}

	//outros métodos 

	public static List<Class> getClasses(String pckgname) throws ClassNotFoundException {
		List<Class> classes = new ArrayList<Class>();
		ClassLoader cld = Thread.currentThread().getContextClassLoader();
		String path = '/' + pckgname.replace('.', '/');
		URL resource = cld.getResource(path);
		File directory = new File(resource.getFile());
		if (directory.exists()) {
			String[] files = directory.list();
			for (int i = 0; i &lt files.length; i++) {
				if (files[i].endsWith(".class")) {
					classes.add(Class.forName(pckgname + '.'
							+ files[i].substring(0, files[i].length() - 6)));
				}
			}
		} 
		return classes;
	}
}
A

Obrigado Plentz…Isso me ajudou =)

Criado 26 de dezembro de 2006
Ultima resposta 15 de jan. de 2007
Respostas 4
Participantes 3