// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents **Hibernateと連携 [#c2357395] ***Spring側で設定したり、CommonsのDBCPを使用したり [#nfa685ff] <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property> <property name="url"><value>jdbc:mysql://192.168.10.3/fuga</value></property> <property name="username"><value>hoge</value></property> <property name="password"><value>foo</value></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- Ver.3を使う場合は、hibernate3 --> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value>Weight.hbm.xml</value> <value>Name.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> </bean> ***既存のhibernate.cfg.xmlをそのまま使う [#ld4299ed] <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>hibernate.cfg.xml</value> </property> </bean> WEBアプリで使う場合は、<value>の値をhibernate.cfg.xmlのままだとクラスパス内を探してくれなかった。なぜかjndiがどうのこうのとか言ってる。 <value>/WEB-INF/hibernate.cfg.xml</value> などとしておかないとダメっぽい。 ***Hibernate Annotationを使う [#m34a56b1] 先のsessionFactoryの設定に、以下のプロパティを追加します。 <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> ***WEBコンテナのコネクションプールを使う場合 [#wbc55bb9] <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/MySqlDS</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value>nu/mine/kino/rss/hibernate/Rss.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> </bean> **スニペット [#xb8b1d60] ***dataSource [#r750c6ff] <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/MySqlDS</value> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>org.gjt.mm.mysql.Driver</value> </property> <property name="url"> <value>jdbc:mysql://192.168.10.3/webdb1</value> </property> <property name="username"> <value>hoge</value> </property> <property name="password"> <value>huga</value> </property> </bean> ***sessionFactory [#o2abd112] -全部ココに書いて、hibernate.cfg.xmlを使わない場合 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value>nu/mine/kino/rss/hibernate/Rss.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> </bean> これだとAnnotationを使ったときにhibernate.cfg.xmlで書いていた <mapping class="nu.mine.kino.rss.hibernate.Rss" /> と等価の記述方法がないような。。。。どうすんのかな。 -既存のhibernate.cfg.xmlを極力使い回す場合 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>/WEB-INF/hibernate.cfg.xml</value> </property> <!-- また、Annotationを使う場合はConfigurationクラスを替える --> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> </bean> ---- この記事は #vote(おもしろかった[1],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}