2013年11月8日金曜日

HibernateでLocalSessionFactoryBeanを複数設定した場合の使いわけ

Hibernateで複数のデータベースに接続したい場合、LocalSessionFactoryBeanを複数設定ファイルに書きますが、ソースコードのDAO側でどうやって切り分けるのかが分からない。


    <bean id="sessionFactoryA" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>/WEB-INF/A.cfg.xml</value>
        </property>
    </bean>

   <bean id="sessionFactoryB" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>/WEB-INF/B.cfg.xml</value>
        </property>

    </bean>

調べてみると、意外にも簡単で@Qualifierアノテーションでidを指定するだけでOK。

@Repository
public class SomeDaoImpl implements SomeDao
{
    @Autowired
    @Qualifier(value="sessionFactoryA")
    private SessionFactory _sessionFactory;


こんな感じ。簡単簡単。

0 件のコメント:

コメントを投稿