SSH整合JPA(Hibernate实现)
4星 · 超过85%的资源 需积分: 10 199 浏览量
更新于2024-09-14
收藏 2KB TXT 举报
"SSH(Struts2、Spring、Hibernate)框架是Java开发中常见的MVC架构,本资源主要介绍如何在SSH基础上引入JPA(Java Persistence API),并使用Hibernate作为其实现。具体教程链接可参考:http://blog.csdn.net/xiejx618/article/details/19498227。该教程涵盖了整合Hibernate Entity Manager的步骤以及相关的配置变更。"
在SSH框架中,SSH分别负责Action层(Struts2)、Service层(Spring)和持久化层(Hibernate)。要将Hibernate与JPA集成,我们需要对原有的SSH配置进行调整。以下是具体的集成步骤:
1. 引入Hibernate Entity Manager依赖:
在项目的pom.xml文件中,添加Hibernate Entity Manager的依赖项,指定所需的版本号,例如`${hibernate.version}`。
```xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
```
2. 更新EntityManagerFactory配置:
将原本的`LocalSessionFactoryBean`替换为`LocalContainerEntityManagerFactoryBean`,以支持JPA。在Spring配置文件中进行如下设置:
```xml
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.test.domain"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false"/>
<property name="generateDdl" value="true"/>
</bean>
</property>
</bean>
```
这里,`dataSource`引用了数据源,`packagesToScan`指定了实体类所在的包,`jpaVendorAdapter`则配置了Hibernate作为JPA的实现,并设置了日志和自动建表的选项。
3. 更改事务管理器:
从`HibernateTransactionManager`更改为`JpaTransactionManager`,保持事务管理器的注册方式不变,确保Spring可以管理事务。如下所示:
```xml
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
```
这样,Spring就会使用JPA进行事务处理,而非原来的Hibernate特定事务管理。
通过以上步骤,SSH框架已经成功集成JPA,且使用Hibernate作为其实现。开发者现在可以在应用中使用JPA的API,如`@Entity`、`@Table`、`@Id`等注解来定义实体类,以及`@Transactional`注解来控制事务。此外,Spring的`JpaRepository`接口也可以提供便捷的操作数据库的方法,进一步简化代码。在实际项目中,可以根据需求调整配置,比如选择其他JPA供应商,或者自定义实体扫描路径等。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-08-09 上传
2016-04-29 上传
2018-08-22 上传
2015-12-18 上传
2010-03-24 上传
103 浏览量
xiejx618
- 粉丝: 225
- 资源: 75
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析