struts2和hibernate5是怎样整合的

admin 14 0

### Struts2与Hibernate5的整合详解

在Java企业级应用开发中,Struts2和Hibernate是两个非常流行的框架,它们分别扮演着MVC(Model-View-Controller)架构中的控制器(Controller)和模型(Model)层的重要角色,Struts2负责处理用户的请求和响应,而Hibernate则专注于数据的持久化操作,将这两个框架有效地整合在一起,可以极大地提高开发效率和应用的性能,我们将详细探讨Struts2和Hibernate5的整合过程。

#### 一、整合概述

Struts2和Hibernate5的整合,主要是将Struts2作为前端控制器,处理用户的请求并调用相应的业务逻辑,而Hibernate5则负责将业务逻辑处理的结果持久化到数据库中,整合的关键在于如何在Struts2的Action中调用Hibernate的Session进行数据库操作,并确保事务的正确管理。

#### 二、整合步骤

##### 1. 引入依赖

需要在项目的pom.xml文件中引入Struts2和Hibernate5的依赖,以及它们之间的整合插件(如struts2-hibernate-plugin,但注意,对于较新的项目,可能不需要显式引入此插件,因为Struts2和Hibernate的整合已经相对成熟,可以直接通过Spring框架进行更灵活的整合)。

<!-- Struts2 依赖 -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.x</version> <!-- 请根据需要使用最新版本 -->
</dependency>

<!-- Hibernate5 依赖 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.x.x.Final</version> <!-- 请根据需要使用最新版本 -->
</dependency>

<!-- 数据库连接池等依赖(根据需要添加) -->

##### 2. 配置Hibernate

接下来,需要配置Hibernate的`hibernate.cfg.xml`文件,指定数据库连接信息、方言、映射文件等。

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接信息 -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/yourdatabase</property>
        <property name="connection.username">username</property>
        <property name="connection.password">password</property>

        <!-- 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- 映射文件 -->
        <mapping resource="com/yourpackage/YourEntity.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

##### 3. 配置Struts2

配置Struts2的`struts.xml`文件,定义Action及其结果页面。

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="yourAction" class="com.yourpackage.YourAction">
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

##### 4. 整合Spring(可选但推荐)

为了更好地管理Hibernate的Session和事务,通常会引入Spring框架,Spring可以管理Hibernate的SessionFactory,并通过声明式事务管理来简化事务的处理。

在Spring的配置文件中(如`applicationContext.xml`),配置Hibernate的SessionFactory和事务管理器。

```xml