Spring 3.1.1 与 JPA2 (Hibernate 4.0.0.Final)整合-DWP
需积分: 0 150 浏览量
更新于2012-02-24
收藏 11.95MB ZIP 举报
在本文中,我们将深入探讨如何将Spring 3.1.1框架与JPA2(Java Persistence API的第二版)以及Hibernate 4.0.0.Final实现整合,以创建一个Dynamic Web Project。这个项目旨在展示如何在Web应用程序中有效地管理数据库操作。
Spring 3.1.1是Spring框架的一个稳定版本,提供了强大的依赖注入、AOP(面向切面编程)、事务管理和MVC等核心特性。JPA2则是一个标准的API,用于在Java应用中管理对象关系映射(ORM),而Hibernate作为JPA的提供商,提供了一个高效且功能丰富的ORM实现。
我们需要在项目中引入所需的库。这包括Spring的核心库、Spring的数据访问/集成库(包含JPA支持)、Hibernate的JPA实现以及相关的数据库驱动。在`pom.xml`或`build.gradle`文件中添加相应的依赖项。
接下来,配置Spring的上下文。创建一个名为`applicationContext.xml`的配置文件,声明数据源、JPA实体管理工厂、事务管理器以及DAO接口的bean。例如:
```xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.myapp.entity"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
```
然后,定义业务层的DAO接口,例如`UserDao`,并使用Spring的`@Repository`注解标记。同时,编写对应的实现类,利用`@PersistenceContext`注解注入`EntityManager`:
```java
@Repository
public interface UserDao {
User getUserById(Long id);
void saveUser(User user);
// 其他方法...
}
@Service
public class UserDaoImpl implements UserDao {
@PersistenceContext
private EntityManager entityManager;
@Override
public User getUserById(Long id) {
return entityManager.find(User.class, id);
}
@Override
public void saveUser(User user) {
if (user.getId() == null) {
entityManager.persist(user);
} else {
entityManager.merge(user);
}
}
// 其他方法的实现...
}
```
对于Dynamic Web Project,我们需要设置`web.xml`来配置Spring的DispatcherServlet和ContextLoaderListener,以加载Spring上下文:
```xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
```
在`servlet-context.xml`中,配置Spring MVC,包括视图解析器和资源处理器:
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.example.myapp"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
```
现在,你可以创建控制器(`@Controller`注解的类),使用@Autowired注解注入DAO,并通过HTTP请求处理用户操作。例如:
```java
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/{id}")
public String getUserById(@PathVariable Long id, Model model) {
User user = userDao.getUserById(id);
model.addAttribute("user", user);
return "userDetails";
}
@PostMapping("/save")
public String saveUser(@ModelAttribute User user) {
userDao.saveUser(user);
return "redirect:/users";
}
}
```
根据项目需求创建对应的JSP视图页面,如`userDetails.jsp`。
总结,Spring 3.1.1与JPA2(Hibernate 4.0.0.Final)的整合涉及以下几个关键步骤:
1. 引入相关依赖
2. 配置Spring上下文(`applicationContext.xml`)
3. 创建DAO接口及实现,利用`@PersistenceContext`注入`EntityManager`
4. 设置`web.xml`以加载Spring上下文和DispatcherServlet
5. 配置Spring MVC(`servlet-context.xml`)
6. 编写控制器处理HTTP请求
完成以上步骤后,你就可以拥有一个基于Spring 3.1.1、JPA2(Hibernate 4.0.0.Final)的Dynamic Web Project,实现数据库操作和Web展示的功能。在实际项目中,还可以根据需要添加更多的安全、缓存、性能优化等方面的配置。
haibinzhang
- 粉丝: 3
- 资源: 6
最新资源
- springboot264基于JAVA的民族婚纱预定系统的设计与实现.zip
- springboot073车辆管理系统设计与实现.zip
- 《基于 Java 的本科生毕业在线考试电子商务web应用程序》(毕业设计,源码,部署教程)在本地部署即可运行。功能完善、界面美观、操作简单,具有很高的实用价值,适合相关专业毕设或课程设计使用。.zip
- 《基于 Java 的本科生毕业设计简单电子商务网站》(毕业设计,源码,部署教程)在本地部署即可运行。功能完善、界面美观、操作简单,具有很高的实用价值,适合相关专业毕设或课程设计使用。.zip
- 《基于 Java 的本科生毕业宠物领养中心开发项目》(毕业设计,源码,部署教程)在本地部署即可运行。功能完善、界面美观、操作简单,具有很高的实用价值,适合相关专业毕设或课程设计使用。.zip
- springboot072基于JavaWeb技术的在线考试系统设计与实现.zip
- 《基于Java 的本科生毕业租赁网站开发项目》(毕业设计,源码,部署教程)在本地部署即可运行。功能完善、界面美观、操作简单,具有很高的实用价值,适合相关专业毕设或课程设计使用。.zip
- springboot264基于JAVA的民族婚纱预定系统的设计与实现_0303174040.zip
- 《基于Java的在线食品订购系统》(毕业设计,源码,部署教程)在本地部署即可运行。功能完善、界面美观、操作简单,具有很高的实用价值,适合相关专业毕设或课程设计使用。.zip
- springboot074智能物流管理系统.zip
- springboot265基于Spring Boot的库存管理系统.zip
- springboot075电影评论网站系统设计与实现.zip
- springboot076基于web的智慧社区设计与实现.zip
- springboot265基于Spring Boot的库存管理系统_0303174040.zip
- springboot266基于Web的农产品直卖平台的设计与实现.zip
- 基于unet的皮肤病分割系统,pytorch开发