java 中 springmvc + openjpa 配置 注解

本文详细介绍了如何在Spring MVC项目中整合JPA,并使用OpenJPA作为持久层解决方案。包括配置persistence.xml和Spring配置文件,以及解决将DAO和服务层打包为独立JAR的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提: openjpa 包,spring 3.0以上 java6


jpa:  在ecplise 中创建 jpa 项目 ,配置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="bankJpa" transaction-type="RESOURCE_LOCAL">
<!-- 定义jpa的Provider -->
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
      
        <class>model.City</class>
<properties>
<!-- 
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://10.94.3.201:1433;databaseName=Tree"/>
<property name="javax.persistence.jdbc.user" value="sa0"/>
<property name="javax.persistence.jdbc.password" value="1Foxconn99"/>
<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>

-->
<property name="openjpa.ClassLoadEnhancement" value="true" />  
<property name="openjpa.DynamicEnhancementAgent" value="true" />  
<property name="openjpa.RuntimeUnenhancedClasses" value="supported" />  
</properties>
</persistence-unit>
</persistence>

注意在发布后,这个jpa项目中 不要含有 persistence.xml  ,这个文件要放到 web 项目的 WEB-INF\classes\meta-info\persistence.xml 下面 ,不然会出现错误

2 springmvc 中 配置 ,


<?xml version="1.0" encoding="UTF-8"?>
<beans  
    xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:context="http://www.springframework.org/schema/context"    
    xmlns:mvc="http://www.springframework.org/schema/mvc"    
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/tx   
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 




<!-- 自动扫描的包名 -->  
     
 
 <context:component-scan base-package="com.notes.face" />
    <context:component-scan base-package="com.notes.services" />
    <context:component-scan base-package="com.notes.control" ></context:component-scan> 
    
<!-- 默认的注解映射的支持 -->  
    <mvc:annotation-driven />
      <!-- 
        <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
                <property name="mappings">  
                    <props>  
                        <prop key="helloWorld.do">helloWorldAction</prop>  
                    </props>  
                </property>  
        </bean>  
       
        -->
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />    
         
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="viewClass">  
            <value>org.springframework.web.servlet.view.InternalResourceView</value>  
        </property>   
        </bean>  
        
     
        <!--指定控制器的实现类,
    <bean id="helloWorldControl" class="com.notes.control.HelloWorldControl">  
        <property name="helloWorld">  
            <value>Hello mys World!</value>  
        </property>  
        <property name="viewPage">  
            <value>index.jsp</value>  
        </property>  
        </bean>  
        并且配置其参数的值-->  
        
        
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >  
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>  
        <property name="url" value="jdbc:sqlserver://10.94.3.200:1433;databaseName=Tree"/>  
        <property name="username" value="sa"/>  
        <property name="password" value="Foxconn99"/>  
    </bean>  
      
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>  
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>  
     
     
      <!--   
    <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">  
        <property name="transactionInterceptor" ref="transactionInterceptor"/>  
    </bean>  
     
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
        <property name="transactionManager" ref="txManager"/>  
        <property name="transactionAttributeSource">  
            <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>  
        </property>  
    </bean>  
       -->


    
    <tx:annotation-driven transaction-manager="txManager"/>  
     
   
       <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
        <property name="dataSource" ref="dataSource"/>  
        <property name="jpaVendorAdapter">  
            <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
             
                <property name="showSql" value="true"/>  
                <property name="generateDdl" value="true"/>  
               
                 <property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.SQLServerDictionary"/>  
                
                <!-- property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.DerbyDictionary"/ -->  
            </bean>  
        </property>  
          
        <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>  
        <!-- 
            <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>  
             -->
        </property>  
    </bean>  
    
    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
        <property name="entityManagerFactory" ref="entityManagerFactory"/>  
       
    </bean>  
    
   
 
    
    
</beans> 

我原来在springmvc 中做的 dao 和Service 后来把他们放到独立的 jar包中 , 始终 不能够创建 注解的 entityManagerFactory ,后来在网上找到一个文章,就是

dao,service 打包时候要选择 add directroy enties 入口,才可以扫描到( <context:component-scan base-package="com.notes.services" />)

3 一些 dao,service 的 jar 放到 web-info\lib 下面




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值