这里
JPA
的实现采用
hibernate
,需要使用到下面的
jar
文件
Hiberante
核心包
(8
个文件
)
hibernate-distribution-3.3.1.GA
---------------------------------------------
hibernate3.jar
lib/bytecode/cglib/hibernate-cglib-repack-2.1_3.jar
lib/required/*.jar
Hiberante
注解包
(3
个文件
)
:
hibernate-annotations-3.4.0.GA
------------------------------------------------------------------------------------
hibernate-annotations.jar
lib/ejb3-persistence.jar
、
hibernate-commons-annotations.jar
Hibernate
针对
JPA
的实现包
(3
个文件
)
:
hibernate-entitymanager-3.4.0.GA
------------------------------------------------------------------------------------------------------
hibernate-entitymanager.jar
lib/test/log4j.jar
、
slf4j-log4j12.jar
Spring
安装包下的
dist/spring.jar
dist/modules/spring-webmvc-struts.jar
lib/jakarta-commons/commons-logging.jar
、
commons-dbcp.jar
、
commons-
pool.jar
lib/aspectj/aspectjweaver.jar
、
aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
lib/j2ee/common-annotations.jar
lib/log4j/log4j-1.2.15.jar
Struts
下载
struts-1.3.8-lib.zip
,需要使用到解压目录下的所有
jar
,建议把
jstl-1.0.2.jar
和
standard-1.0.2.jar
更换为
1.1
版本。
Spring
中已经存在一个
antlr-2.7.6.jar
,所
以把
struts
中的
antlr-2.7.2.jar
删除,避免
jar
冲突。
JPA
规范要求在类路径的
META-INF
目录下放置
persistence.xml
,文件的名称是固定的,配置模版
如下:
<?xml version="1.0"?>
<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="itcast" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="123456"/>
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
在
spring
中配置
EntityManagerFactory
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="itcast"/>
</bean>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
使用
spring
解决
JPA
因
EntityManager
关闭导致的延迟加载例外问题。
<filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
</filter-class>
<init-param>
<!--
指定
org.springframework.orm.jpa.LocalEntityManagerFactoryBean
在
spring
配置文件中的名称
,
默认值为
entityManagerFactory.
如果
LocalEntityManagerFactoryBean
在
spring
中的名称不是
entityManagerFactory,
该参数
一定要指定
,
否则会出现找不到
entityManagerFactory
的例外
-->
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>entityManagerFactory</param-value>
</init-param>
</filter>