簡體   English   中英

如何在Spring應用程序上下文中從jpa獲取jdbc數據源?

[英]can I get a jdbc datasource from jpa in spring application context?

如您所知,在spring applicationContext中,我們可以從persistence.xml定義EntityManagerFactory bean,如下所示:

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="MyUnit" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="false" />   
            <property name="database" value="MYSQL" />
        </bean>
    </property>
</bean>

現在,如果我要初始化數據庫,如下所示:

<jdbc:initialize-database data-source="myDataSource" enabled="true">
   <jdbc:script location="classpath*:com/myapp/data*.sql"/>
</jdbc:initialize-database>

我是否必須為此配置另一個數據源bean? 或者我可以參考上面定義的emf,或者可以參考persistence.xml?

 <!-- use jndi lookup, or define it by your selfe -->
 <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myDataSource" />  

<bean
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    id="entityManagerFactory">
    <property name="persistenceUnitName" value="persistenceUnit" />
    <property name="dataSource" ref="dataSource" />

    <!-- this is important to connect JPA and JdbcTemplate transaction control -->
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="false" />
        </bean>
    </property>
</bean>

<!-- jdbc templates that are equals for all databases -->
<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
    <constructor-arg ref="dataSource" />
</bean>
<bean class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate" id="simpleJdbcTemplate">
    <constructor-arg ref="dataSource" />
</bean>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM