2011-12-09 40 views
7

在我之前的项目中,我使用了Hibernate 3.3.2,openJPA 2.1.1的组合来连接数据库并从表中检索信息。现在我想删除Hibernate并使用openJPA进行连接并检索信息。openJPA的persistence.xml配置

我的persistence.xml的以前的配置是

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 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 persistence_2_0.xsd"> 
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
     <property name="hibernate.connection.url" value="jdbc:mysql://10.10.10.10:3306/test?autoReconnect=true"/> 
     <property name="hibernate.connection.username" value="user"/> 
     <property name="hibernate.connection.password" value="pwd"/> 
     <property name="hibernate.generate_statistics" value="true"/> 
     <property name="hibernate.cache.provider_class" value="org.hibernate.cache.OSCacheProvider"/> 
     <property name="hibernate.cache.use_second_level_cache" value="true"/> 
     <property name="hibernate.show_sql" value="true"/> 
     <property name="hibernate.format_sql" value="true"/> 
     <property name="hibernate.c3p0.min_size" value="5"/> 
     <property name="hibernate.c3p0.max_size" value="20"/> 
     <property name="hibernate.c3p0.timeout" value="1800"/> 
     <property name="hibernate.c3p0.max_statements" value="50"/> 
     <property name="hibernate.c3p0.idle_test_period" value="1800"/> 
     <property name="c3p0.idleConnectionTestPeriod" value="1810"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

现在我想移动到OpenJPA 2.1.1和我的persistence.xml文件被

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 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"> 
<persistence-unit name="TestOpenJPAPersistence" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
    <properties> 
     <property name="javax.persistence.jdbc.url" value="jdbc:mysql://10.10.10.10:3306/test?autoReconnect=true"/> 
     <property name="javax.persistence.jdbc.user" value="user"/> 
     <property name="javax.persistence.jdbc.password" value="pwd"/> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
     <property name="openjpa.ConnectionFactoryProperties" value="MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=1800000"/> 
     <property name="openjpa.Log" value="File=E:\\temp\\TestOpenJPAPersistence\\org.apache.openjpa.log, DefaultLevel=DEBUG, Runtime=INFO, Tool=INFO, SQL=TRACE"/> 
     <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.MySQLDictionary"/> 
     <property name="openjpa.DataCache" value="true"/> 
     <property name="openjpa.QueryCache" value="true"/> 
    </properties> 
</persistence-unit> 
</persistence> 

我的问题是什么openJPA中以下休眠属性的替换属性

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.OSCacheProvider"/> 
<property name="hibernate.cache.use_second_level_cache" value="true"/> 
<property name="hibernate.show_sql" value="true"/> 
<property name="hibernate.format_sql" value="true"/> 
<property name="hibernate.c3p0.min_size" value="5"/> 
<property name="hibernate.c3p0.max_size" value="20"/> 
<property name="hibernate.c3p0.timeout" value="1800"/> 
<property name="hibernate.c3p0.max_statements" value="50"/> 
<property name="hibernate.c3p0.idle_test_period" value="1800"/> 

+1

没有违法,但数量你提供的参数表明态度:“为我做”,而不是“帮助我,我被困在......”。如果有人提供完整列表,请算上幸运。 – MaDa

回答

9

经过多次试验和错误,我找到了一些替换参数。我现在的persistence.xml文件看起来像

的persistence.xml:

<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
<properties> 
    <property name="openjpa.ConnectionURL" value="jdbc:mysql://xx.xx.xx.xx:3306/dbname"/> 
    <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/> 
    <property name="openjpa.ConnectionUserName" value="xxx"/> 
    <property name="openjpa.ConnectionPassword" value="xxx"/> 
    <property name="openjpa.DynamicEnhancementAgent" value="true"/> 
    <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> 
    <property name="openjpa.Log" value="SQL=TRACE"/> 
    <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000"/> 
</properties> 

连接池的信息check并为所有的OpenJPA属性check

希望这有助于

+1

+1链接到所有属性,谢谢=) – earcam

相关问题