前提: 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 下面