#topicpath
----
//ここにコンテンツを記述します。
#contents

先にhibernate-spring.xmlにDAO関連の記述の説明をしましたが、ちょっとSpringでやったことをまとめておきます。

**データベース関連 [#fbf52ea9]


beans.xmlはXDocletから自動生成されるけど、SpringのdataSourceやsessionFactoryなどはXDoclet向けの記述を書く場所がわからなかったので、とりあえずhibernate-spring.xmlってファイルを作って読み込ませることにしました。ちなみに、複数のファイルを読み込ませるにはweb.xmlで以下の内容を記述しておきます。
 <context-param>
   <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/beans.xml,
                /WEB-INF/classes/hibernate-spring.xml
   </param-value>  ここは一行で。
 </context-param>
ちなみにこのようなソースファイルに記述するものではないモノについては、XDocletのマージファイル web-settings.xmlに書いておきます。

***hibernate-spring.xml [#m1aa0010]
とりあえず、要件や発生した課題は以下の感じです。
-WEBコンテナのDataSourceを使いたい
-Hibernate3.xを使いたい
-できれば、Hibernate Annotation使って楽したい(*.hbm.xml作りたくない)
-でも、通常hibernate.cfg.xmlで書く
 <mapping class="nu.mine.kino.rss.hibernate.Rss" />
をhibernate-spring.xmlで書く書き方がわからない

いろいろ調べて以下のように行くことにしました。
-hibernate-spring.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
  "http://www.springframework.org/dtd/spring-beans.dtd">
 <beans>
   <!-- WEBコンテナのDataSourceを使う設定 -->
   <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="configLocation">
       <value>/WEB-INF/hibernate.cfg.xml</value>
       <!-- Mappingクラスだけ既存ファイルに書く  -->
     </property>
     <property name="configurationClass">
       <value>org.hibernate.cfg.AnnotationConfiguration</value>
     </property>
   </bean>
 </beans>
このファイルはsource直下など、クラスパスが通っているところに置いておきます。指定されている/WEB-INF/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>
         <mapping class="nu.mine.kino.rss.hibernate.Rss" />
     </session-factory>
 </hibernate-configuration>
とAnnotationが書いてあるクラスファイルを指定しました。

**その他のJavaBeansの設定 [#k5f37198]
その他のJavaBeansに関しては、XDocletを使ってEclipse上で自動生成するようにしています。XDocletで生成されるファイルはbeans.xmlとしました。たとえばPingClientだったら、クラスコメントに
 /**
  * PingサーバにweblogUpdates.pingを打つクライアントです。
  * @spring.bean id = "pingClient"
  */
んで、エンドポイントを決めるセッターメソッドに
 /**
  * @spring.property list =
  *           "http://localhost:8080/PingWeb/PingReceiver,
  *            http://ping.cocolog-nifty.com/xmlrpc,
  *            http://ping.bloggers.jp/rpc/,
  *            http://www.blogpeople.net/servlet/weblogUpdates,
  *            http://ping.myblog.jp"
  */             ↑ 実際は改行しない
 public void setEndpointURLList(List endpointURLLis
     this.endpointURLList = endpointURLList;
 }
と書いておきます。すると以下のようなbeans.xmlが生成されます。

 <bean
     id="pingClient"
     class="nu.mine.kino.ping.PingClient"
 >
   <property name="endpointURLList">
     <list>
       <value>http://ping.cocolog-nifty.com/xmlrpc</value>
       <value>http://localhost:8080/PingWeb/PingReceiver</value>
       <value>http://ping.bloggers.jp/rpc/</value>
       <value>http://www.blogpeople.net/servlet/weblogUpdates</value>
       <value>http://ping.myblog.jp</value>
     </list>
   </property>
 </bean>









----
この記事は
#vote(おもしろかった[1],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS