Configurar C3P0 e hibernate.cfg.xml

Po eu fiz o curso FJ21 da Caelum, e logo após concluido meti a cara em um projeto, onde estou tendo problemas de acesso ao Banco de Dados. De tempos em tempos a conexão com o banco é perdida. Daí tenho q reiniciar o Tomcat para a aplicação voltar ao normal. Tá mó saco ficar fazendo isso todo dia.

Pesquisando aqui no GUJ e diretamente pelo google, encontrei informações sobre a utilização do C3p0, mas… Eu só aprendi a usar o hibernate.properties, não sei nem como utilizar o hibernate.cfg.xml, pois parece que precisa de alguma referência para utilizar a segunda opção, não sei ao certo.

E, sobre o persistence.xml que tem que ficar na pasta META-INF, tb n entendi direito, pois a META-INF que conheço é a que fica dentro do WebContent.

gostaria de pelo menos alguem me desse uma luz sobre o hibernate.cfg.xml, to querendo usar esse arquivo ao invez do hibernate.properties. Pois tenho um exemplo de configuração do C3p0 nesse arquivo.

<?xml version="1.0" encoding="utf-8"?> oracle.jdbc.driver.OracleDriver jdbc:mysql://127.0.0.1/palmeirasportal root org.hibernate.dialect.MySQLDialect

5
20
300
50
3000





Caso esteja alguma coisa errada nesse arquivo, por favor me ajude tb pls. VLw!!!

Obrigado
Gabrie Bittencourt

Fala gasabi,

Bom , primeiro , sobre o persistence.xml, eskece ele, já que vc esta usando o hibernate(persistence.xml é para JPA).

Se vc esta usando o hibernate.properties, vc pode colocar os atributos do seu exemplo do hibernate.xml lá, por exemplo :

oracle.jdbc.driver.OracleDriver

vc pode colocar isso no hibernate.properties como : hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver

Muda apenas o padrão de configurar.

Caso queira usar o hibernate.cfg.xml, mude sua fábrica de conexao do hibernate para isso:

Configuration conf = new AnnotationConfiguration();
conf.configure();

Coloque o hibernate.cfg.xml dentro do pacote src do java.

Segue abaixo um hibernate.cfg.xml meu de exemplo pra usar o c3p0

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/crud</property>
		<property name="hibernate.connection.username">teste</property>
		<property name="hibernate.connection.password">teste</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="hibernate.show_sql">false</property>
		<property name="hibernate.format_sql">false</property>
		<property name="hibernate.jdbc.batch_size">30</property>
		<property name="hibernate.max_fetch_depth">5</property>
		
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>   
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">2</property>
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">10</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>
		<property name="hibernate.c3p0.acquire_increment">2</property>

		<mapping class="br.com.crud.entity.Contact" />
		<mapping class="br.com.crud.entity.Address" />
		<mapping class="br.com.crud.entity.Hobby" />
		<mapping class="br.com.crud.entity.Department" />
		<mapping class="br.com.crud.entity.Role" />
		<mapping class="br.com.crud.entity.Room" />
	</session-factory>
</hibernate-configuration>

Outra coisa muito importante : Vc precisará do c3p0.jar e do hibernate-c3p0.jar

Boa sorte

Muitas dúvidas em…

Vc comentou 3 maneiras de configuração:

hibernate.properties (usando hibernate)
hibernate.cfg.xml (usando hibernate)
persistence.xml (usando JPA - Java Persistence API)

As configurações do c3po podem ser feitas em qualquer um dos arquivos de configuração e quanto aos números depende muito de cada aplicação então pode vc subir sua aplicação com essas configurações postadas mesmo e monitorar durante algum tempo para depois trocar as configurações e vc mesmo ir definindo quais configurações serão melhores.

Particularmente recomendo vc usar JPA com hibernate com todas configurações ficando no persistence.xml.

Esse link explica melhor cada configuração.
http://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPool

Espero ter ajudado…

Vlw dkenji, aparentemente resolveu meu problema… Vou deixar o sistema no ar até amanhã, para ver se ficou no esquema. Amanhã eu volto aqui e posto, se ficou realmente bom ou não.

Obrigado

[quote=dkenji]Fala gasabi,

Bom , primeiro , sobre o persistence.xml, eskece ele, já que vc esta usando o hibernate(persistence.xml é para JPA).

Se vc esta usando o hibernate.properties, vc pode colocar os atributos do seu exemplo do hibernate.xml lá, por exemplo :

oracle.jdbc.driver.OracleDriver

vc pode colocar isso no hibernate.properties como : hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver

Muda apenas o padrão de configurar.

Caso queira usar o hibernate.cfg.xml, mude sua fábrica de conexao do hibernate para isso:

Configuration conf = new AnnotationConfiguration();
conf.configure();

Coloque o hibernate.cfg.xml dentro do pacote src do java.

Segue abaixo um hibernate.cfg.xml meu de exemplo pra usar o c3p0

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/crud</property>
		<property name="hibernate.connection.username">teste</property>
		<property name="hibernate.connection.password">teste</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="hibernate.show_sql">false</property>
		<property name="hibernate.format_sql">false</property>
		<property name="hibernate.jdbc.batch_size">30</property>
		<property name="hibernate.max_fetch_depth">5</property>
		
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>   
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">2</property>
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">10</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>
		<property name="hibernate.c3p0.acquire_increment">2</property>

		<mapping class="br.com.crud.entity.Contact" />
		<mapping class="br.com.crud.entity.Address" />
		<mapping class="br.com.crud.entity.Hobby" />
		<mapping class="br.com.crud.entity.Department" />
		<mapping class="br.com.crud.entity.Role" />
		<mapping class="br.com.crud.entity.Room" />
	</session-factory>
</hibernate-configuration>

Outra coisa muito importante : Vc precisará do c3p0.jar e do hibernate-c3p0.jar

Boa sorte[/quote]

Eu tinha interesse realmente de trabalhar com JPA, mas como nunca o estudei profundamente… Sinto um pouco de dificuldade quando falo do assunto. Gostaria, se possível de obter um pequeno exemplo para eu ver como funciona junto ao Hibernate.

Se for possível ajudar eu agradeço.

Obrigado

[quote=pissurno]Muitas dúvidas em…

Vc comentou 3 maneiras de configuração:

hibernate.properties (usando hibernate)
hibernate.cfg.xml (usando hibernate)
persistence.xml (usando JPA - Java Persistence API)

As configurações do c3po podem ser feitas em qualquer um dos arquivos de configuração e quanto aos números depende muito de cada aplicação então pode vc subir sua aplicação com essas configurações postadas mesmo e monitorar durante algum tempo para depois trocar as configurações e vc mesmo ir definindo quais configurações serão melhores.

Particularmente recomendo vc usar JPA com hibernate com todas configurações ficando no persistence.xml.

Esse link explica melhor cada configuração.
http://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPool

Espero ter ajudado…[/quote]

Se está perdendo a conexão de tempos em tempos, é provável que você esteja tentando utilizar o mesmo entitymanager/session o tempo todo…