Jens Holzkämper: Tomcat und Datenbanken

Beitrag lesen

Tach,

ich habe den Tomcat zum laufen gebraucht und muss nun wissen, wie ich damit auf eine datenbank zugreife. Kann mir jemand helfen?

ich würde hibernate und c3p0 vorschlagen:

Ich gehe davon aus, dass die Webapp als war verteilt und mysql als DB verwendet wird, ansonsten halt die Pfade/Klassen anpassen:

In META-INF/context.xml

  
<?xml version='1.0' encoding='utf-8'?>  
<Context>  
  <Resource auth="Container" scope="Shareable" description="DB Connection" driverClass="com.mysql.jdbc.Driver" maxPoolSize="100" minPoolSize="10" acquireIncrement="1" name="jdbc/freiwaehlbar" user="username" password="pw" factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource" jdbcUrl="jdbc:mysql://db.example.org/dbname?autoReconnect=true" idleConnectionTestPeriod="300"/>  
</Context>  

In WEB-INF/web.xml

  
<resource-ref>  
	<res-ref-name>jdbc/freiwaehlbar</res-ref-name>  
	<res-type>com.mchange.v2.c3p0.ComboPooledDataSource</res-type>  
	<res-auth>Container</res-auth>  
</resource-ref>  

In der Webapplikation eine hibernate.cfg.xml

  
<?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.datasource">java:/comp/env/jdbc/freiwaehlbar</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.current_session_context_class">thread</property>  
		<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>  
  
		<mapping resource="org/example/dbname/hibernate/Objekt.hbm.xml" />  
	</session-factory>  
</hibernate-configuration>  

Die Mapping-Files (*.hbm.xml) und Klassen lasse ich üblicherweise in Ecplipse von den Hibernate-Tools erzeugen.

Zum Erzeugen von Sessions erzeugt man sich dann eine Session-Factory und der Rest ergibt sich vermutlich aus der Hibernate-Doku.

  
Configuration config = new Configuration();  
config.configure("hibernate.cfg.xml");  
SessionFactory sessionFactory = config.buildSessionFactory();  

Die Jar-Files für die mysql-connection und c3p0 dürfen nicht in der Webapplikation liegen sondern direkt im Library-Verzeichnis des Tomcat liegen, sonst gibt es früher oder später Probleme beim Aufbau der Connection-Pools.

mfg
Woodfighter