现在的位置: 首页 > 综合 > 正文

spring + jpa 配置

2014年09月05日 ⁄ 综合 ⁄ 共 3837字 ⁄ 字号 评论关闭

一、根目录创建 数据库访问配置文件 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);
}
}

抱歉!评论已关闭.