一、根目录创建 数据库访问配置文件 proxool.xml
<?xml version="1.0" encoding="utf-8"?>
<something-else-entirely>
<proxool>
<alias>alias</alias>
<driver-url>jdbc:oracle:thin:@127.0.0.1:1521:database</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="username" />
<property name="password" value="password" />
</driver-properties>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<prototype-count>10</prototype-count>
<maximum-connection-count>100</maximum-connection-count>
<minimum-connection-count>50</minimum-connection-count>
</proxool>
</something-else-entirely>
二、配置数据路连接池 根目录下 创建 META-INF/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_1_0.xsd"
version="1.0">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<!-- HIBERNATE 的PROXOOL连接池配置(需要jar包:proxool.jar) -->
<property name="hibernate.connection.provider_class" value="org.hibernate.connection.ProxoolConnectionProvider"/>
<property name="hibernate.proxool.pool_alias" value="alias"/>
<property name="hibernate.proxool.xml" value="proxool.xml"/>
<property name="hibernate.proxool.existing_pool" value="true"/>
<!-- 方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<!-- 是否使用查询缓存 -->
<property name="hibernate.cache.use_query_cache" value="false" />
<!-- 是否使用二级缓存 -->
<property name="hibernate.cache.use_second_level_cache" value="true" />
<!-- 二级缓存提供类 -->
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
<!-- 是否显示SQL -->
<property name="hibernate.show_sql" value="true" />
<!-- 是否格式化SQL -->
<property name="hibernate.format_sql" value="true" />
<!-- 是否自动创建表等DDL操作 -->
<property name="hibernate.hbm2ddl.auto" value="none"/>
</properties>
</persistence-unit>
</persistence>
三、项目启动时 加载 数据库配置文件 web.xml
<!-- 初始化 JPA 数据源连接池 -->
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/classes/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
四、spring 集成 jpa,修改applicationContext.xml
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- JPA配置 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="persistenceUnit"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
五、J2SE 下测试 JPA
public class TestJPA extends ServletEndpointSupport{
private EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("persistenceUnit");
private EntityManager entityManager = entityManagerFactory.createEntityManager();
private String testJpa(Object obj){
try {
// 开启事务
entityManager.getTransaction().begin();
companyInfo.setCompanyCreatetime(DateUtil.getCurrDateOfDate("yyyy-MM-dd hh:mm:ss"));
companyInfo.setCompanyModifytime(DateUtil.getCurrDateOfDate("yyyy-MM-dd hh:mm:ss"));
// 持久化操作
entityManager.persist(obj);
// 提交事务
entityManager.getTransaction().commit();
return String.valueOf(companyInfo.getCompanyId());
} catch (Exception e) {
e.printStackTrace();
// 异常回滚事务
entityManager.getTransaction().rollback();
}finally{
// 销毁对象
entityManager.close();
entityManagerFactory.close();
}
return "0";
}
public static void main(String [] args){
TestJPA t = new TestJPA();
t.testJpa(obj);
}
}