2012-02-12 2 views
2

comme vous le savez, en applicationContext de printemps, nous pouvons définir le haricot EntityManagerFactory de persistence.xml juste aime:puis-je obtenir une source de données jdbc de jpa dans le contexte de l'application printanière?

<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> 

maintenant si je veux initialiser la base de données comme suit:

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

dois-je une autre config doit source de données bean pour elle? ou je peux ref à emf défini ci-dessus, ou peut ref à persistence.xml?

+0

@skaffman: Il est de la référence du printemps: 12.9.1 Initialiser une instance de base de données en utilisant Spring XML « Si vous souhaitez initialiser une base de données et vous pouvez fournir une référence à un grain de DataSource, utilisez le initialize -datasource dans l'espace de noms spring-jdbc: " – Ralph

Répondre

1
<!-- 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> 
Questions connexes