struts2+spring+hibernate整合步骤(1)

struts2、hibernate、spring所需jar包 struts-core-2.x.x.jar ----struts核心包 xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建 ognl-2.6.x.jar ----对象导航语言 freemarker-2.3.x.jar ------struts2的ui标签的模板使用 commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件 struts-spring-plugin-2.x.x.jar ---用于struts2继承spring的插件 hibernate核心安装包下的(下载路径:http://www.hibernate.org/ ,点击Hibernate Core 右边的download) hibernate2.jar lib\bytecode\hibernate-cglib-repack-2.1_3.jar lib\required\*.jar hibernate安装包下的(下载路径:http://www.hibernate.org/;点击Hibernate Annotations 右边的下载) hibernate-annotations.jar lib\ejb3-persistence.jar、hibernate-commons-annotations.jar hibernate针对JPA的实现包(下载路径:http://www.hibernate.org/ ,点击Hibernate Entitymanager右边下载) hibernate-entitymanager.jar lib\test\log4j.jar、 slf4j-log4j12.jar spring安装包下的 dist\spring.jar lib\c3p0\c3p0-0.9.1.2.jar lib\aspecti\aspectjweaver.jar aspectjrt.jar lib\colib\cglib-nodep-2.1_3.jar lib\j2ee\common-annotations.jar vlib\log4j\log4j-1.2.15.jar lib\jakarta-commons\commons_loggin.jar 数据库驱动包 引用 创建mysql数据库ssh 设置编码为utf-8 语句: create database ssh character set 'utf8' collate 'utf8_general_ci' 引用 1.先整合spring和hibernate *将spring和hibernate的jar包放入lib下; *创建spring的beans.xml配置文件

Java代码 copy

1.<?xml version="1.0" encoding="UTF-8"?>    
2.<beans xmlns="http://www.springframework.org/schema/beans" 
3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
4.    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 
5.    xsi:schemaLocation="http://www.springframework.org/schema/beans   
6.           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
7.           http://www.springframework.org/schema/context   
8.           http://www.springframework.org/schema/context/spring-context-2.5.xsd   
9.           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
10.           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">   
11.    
12.    <!-- 将bean交由spring管理可以 用<bean></bean>和扫描加注 -->    
13.    <!--    
14.        扫描该包及该包下的子包    
15.    -->    
16.    <context:component-scan base-package="com.yss"></context:component-scan>    
17.    
18.    
19.    <!-- 集成hibernate  sessionFactory单例模式  线程安全  创建耗内存-->    
20.    <!-- 将hibernate的事务也交由spring管理 -->    
21.    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
22.        destroy-method="close">    
23.        <property name="driverClass" value="org.gjt.mm.mysql.Driver" />    
24.        <property name="jdbcUrl" 
25.            value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8" />    
26.        <property name="user" value="root" />    
27.        <property name="password" value="root" />    
28.        <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->    
29.        <property name="initialPoolSize" value="1" />    
30.        <!--连接池中保留的最小连接数。-->    
31.        <property name="minPoolSize" value="1" />    
32.        <!--连接池中保留的最大连接数。Default: 15 -->    
33.        <property name="maxPoolSize" value="300" />    
34.        <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->    
35.        <property name="maxIdleTime" value="60" />    
36.        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->    
37.        <property name="acquireIncrement" value="5" />    
38.        <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->    
39.        <property name="idleConnectionTestPeriod" value="60" />    
40.    </bean>    
41.    
42.    <bean id="sessionFactory" 
43.        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">    
44.        <property name="dataSource" ref="dataSource" />    
45.        <property name="mappingResources"><!-- 放置hibernate的配置文件 -->    
46.            <list>    
47.                <value>com/yss/bean/Employee.hbm.xml</value>    
48.            </list>    
49.        </property>    
50.        <property name="hibernateProperties">    
51.            <value>    
52.                hibernate.dialect=org.hibernate.dialect.MySQL5Dialect    
53.                hibernate.hbm2ddl.auto=update    
54.                hibernate.show_sql=true 
55.                hibernate.format_sql=false 
56.              </value>    
57.        </property>    
58.    </bean>    
59.        
60.    <!--hibernate事务管理器配置-->    
61.    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">    
62.        <property name="sessionFactory" ref="sessionFactory"></property>    
63.    </bean>    
64.        
65.    <!--spring可以用xml和注解来配置事务 声明  -->    
66.    <tx:annotation-driven transaction-manager="transactionManager"/>    
67.</beans>    

*配置hibernate的model.hbm.xml和创建model类

*创建service

  1. service接口:

Java代码

1.public interface EmployeeService {    
2.    public boolean save(Employee employee);    
3.    public boolean update(Employee employee);    
4.    public Employee find(String username);    
5.    public boolean delete(String... username);//表示可变参数   
6.    public List<Employee> findAll();    
7.}     

service实现类:

Java代码

1.import java.util.List;    
2.    
3.import javax.annotation.Resource;    
4.    
5.import org.apache.log4j.Logger;    
6.import org.hibernate.SessionFactory;    
7.import org.springframework.stereotype.Service;    
8.import org.springframework.transaction.annotation.Propagation;    
9.import org.springframework.transaction.annotation.Transactional;    
10.    
11.import com.yss.bean.Employee;    
12.import com.yss.service.EmployeeService;    
13.    
14./** 
15. * @author qing 默认bean名称 employeeServiceBean 
16. *@Service @Transactional 注入service和开启事务 
17. */ 
18.@Service 
19.@Transactional 
20.public class EmployeeServiceBean implements EmployeeService {    
21.    private static Logger logger = Logger.getLogger(Employee.class);    
22.    /** 
23.     * 注入sessionFactory 
24.     */ 
25.    @Resource SessionFactory factory;    
26.    
27.    public boolean delete(String... usernames) {    
28.        try {    
29.            for (String username : usernames) {    
30.                factory.getCurrentSession().delete(    
31.                        factory.getCurrentSession().load(Employee.class,    
32.                                username));    
33.            }    
34.        } catch (Exception e) {    
35.            logger.error(e.getMessage());    
36.            return false;    
37.        }    
38.        return true;    
39.    }    
40.    
41.    /* 
42.     * (non-Javadoc) 
43.     *   
44.     * @see com.yss.service.EmployeeService#find(com.yss.bean.Employee) 
45.     * 此标注表示不需要事务处理 
46.     */ 
47.    @Transactional(propagation = Propagation.NOT_SUPPORTED)    
48.    public Employee find(String username) {    
49.        return (Employee) factory.getCurrentSession().get(Employee.class,    
50.                username);    
51.    }    
52.    
53.    @SuppressWarnings("unchecked")    
54.    @Transactional(propagation = Propagation.NOT_SUPPORTED)    
55.    public List<Employee> findAll() {    
56.        return factory.getCurrentSession().createQuery("from Employee emp")  
57.                .list();    
58.    }    
59.    
60.    public boolean save(Employee employee) {    
61.        try {    
62.            factory.getCurrentSession().persist(employee);// .save(employee);//   
63.                                                            // 获取已经开好的Session   
64.        } catch (Exception e) {    
65.            logger.error(e.getMessage());    
66.            return false;    
67.        }    
68.        return true;    
69.    }    
70.    
71.    public boolean update(Employee employee) {    
72.        try {    
73.            factory.getCurrentSession().merge(employee);// 类似于saveOrUpdate()方法   
74.        } catch (Exception e) {    
75.            logger.error(e.getMessage());    
76.            return false;    
77.        }    
78.        return true;    
79.    }    
80.    
81.}    

原文发布于微信公众号 - Java帮帮(javahelp)

原文发表时间:2016-12-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android开发经验

webview调用android代码

1736
来自专栏你不就像风一样

史上超全面的Neo4j使用指南

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是...

26.1K11
来自专栏Android 研究

Android系统启动——5 zyogte进程(Java篇)

上一篇文章,我们知道在AndroidRuntime.cpp的start()函数里面是调用的Zygoteinit类的main()函数,那我们就继续研究

2672
来自专栏JadePeng的技术博客

Docker+Jenkins持续集成环境(5): android构建与apk发布

项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个...

5178
来自专栏cloudskyme

OTL技术应用

什么是OTL:OTL 是 Oracle, Odbc and DB2-CLI TemplateLibrary 的缩写,是一个操控关系数据库的C++模板库,它目前几...

6236
来自专栏Android干货园

Android 拦截WebView加载URL,控制其加载CSS、JS资源

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49...

7322
来自专栏QQ音乐技术团队的专栏

JsBridge实现JavaScript和Java的互相调用

前端网页JavaScript(下文简称Js)和Java互相调用在手机应用中越来越常见,JsBridge是最常用的解决方案。 1. Js调用Java,Java调用...

6639
来自专栏yukong的小专栏

【SpringBoot2.0系列05】SpringBoot之整合Mybatis前言实现

【SpringBoot2.0系列02】SpringBoot之使用Thymeleaf视图模板

2562
来自专栏Golang语言社区

用Go实现一门解释型语言

A interpreter language implementation in Go

912
来自专栏扎心了老铁

springboot使用zookeeper(curator)实现注册发现与负载均衡

最简单的实现服务高可用的方法就是集群化,也就是分布式部署,但是分布式部署会带来一些问题。比如: 1、各个实例之间的协同(锁) 2、负载均衡 3、热删除 这里通过...

3K10

扫码关注云+社区

领取腾讯云代金券