Rom*_*man 34 java spring persistence jpa
我已经以两种方式看到(并完成了)数据源配置(下面的代码仅用于演示):
1)配置内部持久性单元,如:
<persistence-unit name="LocalDB" transaction-type="RESOURCE_LOCAL">
<class>domain.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.c3p0.min_size" value="5"/>
....
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
2)配置spring配置文件(如applicationContext.xml):
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
</bean>
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
.....
</bean>
Run Code Online (Sandbox Code Playgroud)
问题是:每种方式都有任何利弊,或者只是品味问题?
Leo*_*nel 32
如果你在JavaEE容器中,它会产生很大的不同.
除了个人偏好之外,如果您通过一些修改来遵循第二种方法,那么您会好得多.
在第一种情况下,您正在创建自己的连接池,而不是从容器中的现有连接池中获利.因此,即使您将容器配置为最多20个同时连接到数据库的连接,也无法保证此最大值,因为此新连接池不受您的配置限制.此外,您不会从容器为您提供的任何监视工具中获利.
在第二种情况下,您还要创建自己的连接池,具有与上面相同的缺点.但是,您可以隔离此spring bean的定义,并仅在测试运行中使用它.
最好的办法是通过JNDI查找容器的连接池.然后,您一定要尊重容器中的数据源配置.
<!-- datasource-test.xml -->
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
.....
</bean>
Run Code Online (Sandbox Code Playgroud)
<!-- datasource.xml -->
<jee:jndi-lookup id="domainDataSource" jndi-lookup="jndi/MyDataSource" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28468 次 |
| 最近记录: |