我们可以将任何struts应用程序与hibernate集成。无需额外的努力。
在此示例中, 我们将结合使用带有Hibernate的struts 2框架。你需要具有Struts 2和休眠状态的jar文件。
Hibernate和struts2集成的示例
在此示例中, 我们将使用struts2创建注册表单, 并使用Hibernate将这些数据存储到数据库中。让我们看看为将struts2应用程序与hibernate集成而应该创建的文件。
- index.jsp文件以获取用户输入。
- User.java一个用于处理请求的操作类。它使用dao类存储数据。
- RegisterDao.java一个Java类, 该类使用DAO设计模式来使用休眠模式存储数据。
- user.hbm.xml一个映射文件, 其中包含有关持久类的信息。在这种情况下, 动作类用作持久类。
- hibernate.cfg.xml一个配置文件, 其中包含有关数据库和映射文件的信息。
- struts.xml文件包含有关操作类和要调用的结果页面的信息。
- welcome.jsp一个jsp文件, 显示带有用户名的欢迎信息。
- web.xml一个web.xml文件, 其中包含有关Struts控制器框架的信息。
<
%@ taglib uri="/struts-tags" prefix="S" %>
<
S:form action="register">
<
S:textfield name="name" label="Name">
<
/S:textfield>
<
S:submit value="http://www.srcmini.com/register">
<
/S:submit>
<
/S:form>
User.java【Hibernate和Struts 2集成】这是一个简单的POJO类。在这里, 它用作struts的action类和hibernate的持久类。它调用RegisterDao类的register方法, 并以字符串形式返回成功。
package com.srcmini;
public class User {
private int id;
private String name;
//getters and setterspublic String execute(){
RegisterDao.saveUser(this);
return "success";
}}
RegisterDao.java这是一个Java类, 它使用Hibernate框架保存User类的对象。
package com.srcmini;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class RegisterDao {public static int saveUser(User u){Session session=new Configuration().
configure("hibernate.cfg.xml").buildSessionFactory().openSession();
Transaction t=session.beginTransaction();
int i=(Integer)session.save(u);
t.commit();
session.close();
return i;
}}
user.hbm.xml该映射文件包含永久类的所有信息。
<
?xml version='1.0' encoding='UTF-8'?>
<
!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<
hibernate-mapping>
<
class name="com.srcmini.User" table="user451">
<
id name="id">
<
generator class="increment">
<
/generator>
<
/id>
<
property name="name">
<
/property>
<
/class>
<
/hibernate-mapping>
hibernate.cfg.xml此配置文件包含有关数据库和映射文件的信息。在这里, 我们使用hb2ddl.auto属性, 因此你无需在数据库中创建表。
<
?xml version='1.0' encoding='UTF-8'?>
<
!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<
!-- Generated by MyEclipse Hibernate Tools.-->
<
hibernate-configuration>
<
session-factory>
<
property name="hbm2ddl.auto">
update<
/property>
<
property name="dialect">
org.hibernate.dialect.Oracle9Dialect<
/property>
<
property name="connection.url">
jdbc:oracle:thin:@localhost:1521:xe<
/property>
<
property name="connection.username">
system<
/property>
<
property name="connection.password">
oracle<
/property>
<
property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver<
/property>
<
mapping resource="user.hbm.xml"/>
<
/session-factory>
<
/hibernate-configuration>
struts.xml该文件包含有关要调用的动作类的信息。这里的动作类是User。
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE struts PUBLIC "-//Apache Software Foundation
//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<
struts>
<
package name="abc" extends="struts-default">
<
action name="register" class="com.srcmini.User">
<
result name="success">
welcome.jsp<
/result>
<
/action>
<
/package>
<
/struts>
welcome.jsp这是欢迎文件, 显示带有用户名的欢迎消息。
<
%@ taglib uri="/struts-tags" prefix="S" %>
Welcome: <
S:property value="http://www.srcmini.com/name"/>
web.xml这是web.xml文件, 其中包含有关控制器的信息。对于Struts2, StrutsPrepareAndExecuteFilter类用作控制器。
<
?xml version="1.0" encoding="UTF-8"?>
<
web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<
welcome-file-list>
<
welcome-file>
index.jsp<
/welcome-file>
<
/welcome-file-list>
<
filter>
<
filter-name>
struts2<
/filter-name>
<
filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<
/filter-class>
<
/filter>
<
filter-mapping>
<
filter-name>
struts2<
/filter-name>
<
url-pattern>
/*<
/url-pattern>
<
/filter-mapping>
<
/web-app>
推荐阅读
- Hibernate和Spring集成
- HCQL(Hibernate标准查询语言)
- Hibernate组件映射
- Hibernate中的集合映射
- Hibernate中的缓存
- Hibernate双向关联
- 带有Hibernate的Web应用程序(使用XML)
- 使用xml文件的每个具体类的表
- 第一个没有IDE的Hibernate示例