struts2 mysql 注入 版本_Struts2+Hibernate使用Full Hibernate Plugin集成

在上篇 Struts2 + Hibernate集成 实例中, 它使用 servlet 上下文监听 Hibernate 的 Session,而且把Struts2和Hibernate框架集成。

但是,总有一些东西要提高。在本教程中,我们将展示如何整合Struts2+Hibernate,并使用Struts2一个名为“Full Hibernate Plugin“的插件。

见下面的集成步骤:

把 “Full Hibernate Plugin” jar 放入到工程类路径。

使用 “@SessionTarget” 注释来注入到 Hibernate session; 当“@TransactionTarget” 注释注入到Hibernate 事务。

在 struts.xml, 让包扩展 “hibernate-default“,而不是默认的堆栈。

看看下面的关系:

Struts 2 Hibernate Database

注,

本教程是从以前的Struts2 + Hibernate集成 实例(servlet context listener)更新版本。因此,JSP 和 Hibernate 配置基本相同,只是整合的部分是有点不同,尝试比较既能发现不同。

1. 工程结构

在节教程,我们创建一个工程名为 full-hibernate 的web工程。看看这个项目文件夹的完整结构。

cee3629bfa5d1e9eb94c8b76167de8fe.png

2. MySQL创建表脚本

Customer表结构

CREATE TABLE `customer` (

`customer_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(45) NOT NULL,

`address` varchar(255) NOT NULL,

`create_date` datetime NOT NULL,

PRIMARY KEY (`customer_id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

3. Hibernate相关配置

所有 Hibernate 的模型和配置的东西。

Customer.java – 为customer 表创建一个类。

package com.yiibai.customer.model;

import java.util.Date;

public class Customer implements java.io.Serializable {

private Long customerId;

private String name;

private String address;

private Date createdDate;

//getter and setter methods

}

Customer.hbm.xml – Hibernate 的 customer 表映射。

/p>

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

table="customer" catalog="yiibai">

文件: hibernate.cfg.xml, Hibernate 数据库配置

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

false

password

jdbc:mysql://localhost:3306/yiibai

root

org.hibernate.dialect.MySQLDialect

true

true

false

5. DAO

实现DAO设计模式执行数据库操作。在 CustomerDAOImpl 类, 声明Hibernate会话和事务为类成员。在Struts 2的项目初始化, “Full Hibernate Plugin” 使用 @SessionTarget 和 @TransactionTarget 分别标注将注入相应的 Hibernate 会话和事务成为类成员。

CustomerDAO.java

package com.yiibai.customer.dao;

import java.util.List;

import com.yiibai.customer.model.Customer;

public interface CustomerDAO{

void addCustomer(Customer customer);

List listCustomer();

}

CustomerDAOImpl.java

package com.yiibai.customer.dao.impl;

import java.util.List;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;

import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;

import com.yiibai.customer.dao.CustomerDAO;

import com.yiibai.customer.model.Customer;

public class CustomerDAOImpl implements CustomerDAO{

@SessionTarget

Session session;

@TransactionTarget

Transaction transaction;

//add the customer

public void addCustomer(Customer customer){

session.save(customer);

}

//return all the customers in list

public List listCustomer(){

return session.createQuery("from Customer").list();

}

}

6. Action

在Action类,调用DAO类来执行数据库操作。

CustomerAction.java

package com.yiibai.customer.action;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import com.yiibai.customer.dao.CustomerDAO;

import com.yiibai.customer.dao.impl.CustomerDAOImpl;

import com.yiibai.customer.model.Customer;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction extends ActionSupport

implements ModelDriven{

Customer customer = new Customer();

List customerList = new ArrayList();

CustomerDAO customerDAO = new CustomerDAOImpl();

public String execute() throws Exception {

return SUCCESS;

}

public Object getModel() {

return customer;

}

public List getCustomerList() {

return customerList;

}

public void setCustomerList(List customerList) {

this.customerList = customerList;

}

//save customer

public String addCustomer() throws Exception{

//save it

customer.setCreatedDate(new Date());

customerDAO.addCustomer(customer);

//reload the customer list

customerList = null;

customerList = customerDAO.listCustomer();

return SUCCESS;

}

//list all customers

public String listCustomer() throws Exception{

customerList = customerDAO.listCustomer();

return SUCCESS;

}

}

7. JSP 页面

JSP页面添加并列出客户。

customer.jsp

Struts 2 Full Hibernate Plugin example

Add Customer

All Customers

Customer IdNameAddressCreated Date

8. struts.xml

链接所有〜让包扩展 “hibernate-default” 来代替 “struts-default“.

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

class="com.yiibai.customer.action.CustomerAction" method="addCustomer" >

pages/customer.jsp

class="com.yiibai.customer.action.CustomerAction" method="listCustomer" >

pages/customer.jsp

9. 实例

79f204adb5202a1b63da496d18157169.png

参考

下载代码

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值