0

Web アプリケーションに Tomcat で Spring を使用しています。私のデータソースは Spring で構築され、org.springframework.jndi.JndiTemplate を使用して JNDI に公開されます。これはいくつかの理由で扱いにくいですが、私の主な問題は、使用されているデータベースを制御するのが難しいことです (これはテストのために行いたいことです)。JNDIをルックアップサービスとして使用せずにJPAを使用することは可能ですか? 理想的には、データ ソースを JPA に直接提供するか、実装にコンテナーに依存しない他の方法を使用できます (コンテナーによって提供されない JNDI 実装を調査しましたが、それらは '私のニーズには合っていません)。

4

2 に答える 2

2

spring 構成ファイルでデータソースを指定できます。これは、MySql データベースを使用する私の抜粋です。完全な構成ファイルとプロジェクトを表示するには、GitHubでソースを表示します。

<!-- Database -->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/to_thought_tutorial" />
    <property name="username" value="tutorial" />
    <property name="password" value="tutorial" />
</bean>

<!-- Entity Manager -->
<bean id="entityManagerFactory"
   class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       <property name="dataSource" ref="datasource" />
       <property name="persistenceUnitName" value="tothought-tutorial" />
</bean>

また、データソースのセットアップ方法を説明するビデオを含む私のブログにアクセスすることをお勧めします: http://tothought.cloudfoundry.com/post/4

Spring のドキュメントには、JNDI に依存しないデータソースをセットアップする方法の例も含まれています: http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/jdbc.html#jdbc -情報源

于 2013-01-03T01:16:52.540 に答える
0

特定の持続性ユニットに対して、persistence.xml でデータ ソース接続を直接定義できます。

<?xml version="1.0" encoding="UTF-8"?>
<persistence
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
        version="2.0">
    <persistence-unit name="BlahBlah" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost/db_name"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="xxx"/>
        </properties>
    </persistence-unit>
</persistence>

Hibernate を使用していない場合は、プロバイダーのプロパティを検索するか、JPA2 標準のプロパティ などを使用javax.persistence.jdbc.userできjavax.persistence.jdbc.passwordますjavax.persistence.jdbc.url

于 2013-01-03T01:19:29.397 に答える