struts2+spring+hibernate整合步骤(1)
时间:2022-05-04
本文章向大家介绍struts2+spring+hibernate整合步骤(1),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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
- 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教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- kubeadm高可用集群意外删除一mater节点,重新加入失败
- Chevereto——简介及安装
- Typecho开启伪静态并隐藏index.php
- Prism代码高亮Pjax重载函数
- Qt示例-AnalogClock-自定义窗体-使用QPainter的转换和缩放特性简化绘图
- 2019-12-27-traefik
- 2019-12-05-eck-qustion
- 聊聊dubbo-go的ConsumerSignFilter
- Javascript错误处理
- 程序员说模型过拟合的时候,说的是什么?
- 分分钟教会你搭建企业级的 npm 私有仓库
- Golang语言之字符串操作
- Go语言ORM-gorm学习笔记(二)
- TypeScript: 常用的高级类型
- TypeScript:得泛型者,得天下