DAO层注入HibernateTemplate的两种方式
-------------------------siwuxie095
DAO 层注入 HibernateTemplate 的两种方式
方式一:普通方式
具体实现如下:
(1)编写页面
add.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <html> <head> <meta <title>添加用户</title> </head> <body>
<form 用户名:<input 地址:<input <input </form>
</body> </html> |
succ.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <html> <head> <meta <title>添加成功</title> </head> <body>
<h1>添加成功!<a
</body> </html> |
(2)编写实体类
User.java:
package com.siwuxie095.entity; public class User {
Integer uid; String username; String address;
public Integer getUid() { return uid; } public this.uid = uid; }
public String getUsername() { return username; } public this.username = username; }
public String getAddress() { return address; } public this.address = address; }
@Override public String toString() { return ", address=" + address + "]"; }
} |
(3)在
Hibernate 映射配置文件中进行配置
User.hbm.xml:
<?xml <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class
<id <generator </id>
<property <property
</class>
</hibernate-mapping> |
(4)在
Hibernate 核心配置文件中进行配置
hibernate.cfg.xml:
<?xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory>
<property <property <!-- 注意:只有配置 hibernate.hbm2ddl.auto 为 update,才能自动创建表 --> <property <property <!-- 原来的配置: <property name="hibernate.current_session_context_class">thread</property>
在 SSH 框架整合中会报错,要么将这个配置删了,要么改成如下配置
参考链接:http://blog.csdn.net/maoyuanming0806/article/details/61417995 --> <property org.springframework.orm.hibernate5.SpringSessionContext </property>
<mapping
</session-factory> </hibernate-configuration> |
(5)编写
Action 类
package com.siwuxie095.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.siwuxie095.entity.User; import com.siwuxie095.service.UserService; public class UserAction extends ActionSupport implements ModelDriven<User> { private User user=new User();
@Override public User getModel() { return user; }
private UserService userService;
public this.userService = userService; }
public String add() { userService.add(user); return } } |
(6)编写
Service 类
UserService.java:
package com.siwuxie095.service; import org.springframework.transaction.annotation.Transactional; import com.siwuxie095.dao.UserDao; import com.siwuxie095.entity.User; @Transactional public class UserService {
private UserDao userDao;
public this.userDao = userDao; } public userDao.add(user); }
} |
(7)编写
DAO 接口及其实现类
UserDao.java:
package com.siwuxie095.dao; import com.siwuxie095.entity.User; public interface UserDao { void add(User user);
} |
UserDaoImpl.java:
package com.siwuxie095.dao.impl; import org.springframework.orm.hibernate5.HibernateTemplate; import com.siwuxie095.dao.UserDao; import com.siwuxie095.entity.User; public class UserDaoImpl implements UserDao {
private HibernateTemplate hibernateTemplate;
public this.hibernateTemplate = hibernateTemplate; } @Override public hibernateTemplate.save(user); } } |
(8)在
Struts2 核心配置文件中进行配置
struts.xml:
<?xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package
<action <result </action>
</package> </struts> |
(9)在
Spring 核心配置文件中进行配置
applicationContext.xml:
<?xml <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- (1) --> <!-- 配置 C3P0 连接池 --> <bean <property <!-- jdbc:mysql:///test_db 是 jdbc:mysql://localhost:3306/test_db 的简写 --> <property <property <property </bean>
<!-- SessionFactory 对象的创建交给 Spring 进行管理 --> <bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 因为在 Hibernate 核心配置文件中,没有数据库配置, 而是在 Spring 的核心配置文件中进行配置,所以需要 注入 dataSource LocalSessionFactoryBean 中有相关属性,所以可以 注入 --> <property <!-- 指定 Hibernate 核心配置文件的位置 --> <property </bean>
<!-- (2) --> <!-- 配置 Action 对象 --> <bean <property </bean> <!-- 配置 Service 对象 --> <bean <property </bean> <!-- 配置 Dao 实现类对象 --> <bean <property </bean> <!-- 配置 HibernateTemplate 对象 --> <bean <!-- 注入 SessionFactory 对象 --> <property </bean>
<!-- (3) --> <!-- 配置事务管理器 HibernateTransactionManager --> <bean class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <!--注入 SessionFactory 对象 --> <property </bean>
<!-- 开启事务注解 --> <tx:annotation-driven
</beans> |
(10)在部署描述文件中进行配置
web.xml:
<?xml <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
<!-- 配置 Struts2 的核心过滤器 --> <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>
<!-- 配置 Spring 的监听器 ContextLoaderListener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
<!-- 配置 Spring 核心配置文件的位置(路径) --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
</web-app> |
(11)访问路径
http://localhost:8080/工程名/add.jsp
方式二:让
DAO 接口实现类继承 HibernateDaoSupport 类
「只有
DAO 接口实现类和 Spring 核心配置文件与方式一不同,其它同上」
具体实现如下:
(1)重写
DAO 接口实现类
UserDaoImpl.java:
package com.siwuxie095.dao.impl; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import com.siwuxie095.dao.UserDao; import com.siwuxie095.entity.User; /** * 让 DAO 接口实现类继承 HibernateDaoSupport 类,直接获取 HibernateTemplate */ public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@Override public
// 直接通过 this 获取 HibernateTemplate,调用 save() 方法保存 this.getHibernateTemplate().save(user);
/* * 此时,也可以获取 SessionFactory * * 法一:this.getSessionFactory() * 法二:this.getHibernateTemplate().getSessionFactory() * * * 此时,也可以获取 Session * * 法一:this.getSessionFactory().getCurrentSession() * 法二:... */ }
} |
(2)重写
Spring 核心配置文件
applicationContext.xml:
<?xml <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- (1) --> <!-- 配置 C3P0 连接池 --> <bean <property <!-- jdbc:mysql:///test_db 是 jdbc:mysql://localhost:3306/test_db 的简写 --> <property <property <property </bean>
<!-- SessionFactory 对象的创建交给 Spring 进行管理 --> <bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 因为在 Hibernate 核心配置文件中,没有数据库配置, 而是在 Spring 的核心配置文件中进行配置,所以需要 注入 dataSource LocalSessionFactoryBean 中有相关属性,所以可以 注入 --> <property <!-- 指定 Hibernate 核心配置文件的位置 --> <property </bean>
<!-- (2) --> <!-- 配置 Action 对象 --> <bean <property </bean> <!-- 配置 Service 对象 --> <bean <property </bean> <!-- 配置 Dao 实现类对象 --> <bean <!-- 注入 SessionFactory 对象
此时,这里不再注入 HibernateTemplate,由于 UserDaoImpl 继承了 HibernateDaoSupport,直接注入 SessionFactory 对象,就能获得 HibernateTemplate 对象 --> <property </bean>
<!-- (3) --> <!-- 配置事务管理器 HibernateTransactionManager --> <bean class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <!--注入 SessionFactory 对象 --> <property </bean>
<!-- 开启事务注解 --> <tx:annotation-driven
</beans> |
【made by siwuxie095】
DAO层注入HibernateTemplate的两种方式的更多相关文章
- spring 注入bean的两种方式
我们都知道,使用spring框架时,不用再使用new来实例化对象了,直接可以通过spring容器来注入即可. 而注入bean有两种方式: 一种是通过XML来配置的,分别有属性注入.构造函数注入和工厂方 ...
- @Autowired获取配置文件中被注入实例的两种方式
一.说明 二.那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式: 1.直接获取 @RunWith(SpringJUnit4ClassRunner.class) @Conte ...
- 【service调用dao层传参的三种方式】
第一种方案:默认数组角标: service Public User selectUser(String name,String area); mapper: <select id="s ...
- 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式
一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架 ...
- MyBatis开发Dao层的两种方式(原始Dao层开发)
本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例. Mapper动态代理开发Dao层请阅读我的下一篇博客:MyBatis开发Dao层的两种方式(Mapper动态代理方 ...
- MyBatis开发Dao层的两种方式(Mapper动态代理方式)
MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Ma ...
- Spring IOC 依赖注入的两种方式XML和注解
依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...
- 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别
1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...
- Python 防止mysql 注入的两种方式
Python防止sql注入一般有两种方法 1.escape_string MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't en ...
随机推荐
- centos7开机界面出现多个选项
第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统) 在CentOS更新后,并不会自动删除旧内核.所以在启动选项中会有多个内核选项,可以手动使用以下命令删除多余的内核 ...
- javascript的焦点管理
HTML5也添加了辅助管理DOM焦点的功能. 元素获得焦点的方式有页面加载,用户输入和代码中调用的focus()方法. 而document.activeElement属性保存着当前获得焦点的引用. v ...
- 使用HTML引用标签来分隔Ticket回复
今天在查看Ticket的时候,发现如何和客户之间有很多个来回,Ticket的Correspondence就会很长很长,虽然我们有自己的Breakline,但是由于客户回复邮件时,添加的用于分隔旧信息和 ...
- 微软&中科大提出新型自动神经架构设计方法NAO
近期,来自微软和中国科学技术大学的刘铁岩等人发表论文,介绍了一种新型自动神经架构设计方法 NAO,该方法由三个部分组成:编码器.预测器和解码器.实验证明,该方法所发现的架构在 CIFAR-10 上的图 ...
- Fork-Join 原理深入分析(二)
本文是将 Fork-Join 复杂且较为庞大的框架分成5个小点来分析 Fork-Join 框架的实现原理,一个个点地理解透 Fork-Join 的核心原理. 1. Frok-Join 框架的核心类 ...
- html文字在django模板中取消转译
django {{ news.content | safe }} 还有escape=fales,具体咋用,有点蒙蔽
- uva146-枚举,排列
题意: 输入最多150个小写字母,在字典序增大的方向,求下一个排列是什么. 模拟枚举,最后一个字符是递归的最后一层(n层),那么把它弹出栈(还剩n-1层),如果n-1层的字符比第n层小,说明把n层的字 ...
- zabbix监控windows系统CPU使用率
参考网站:https://blog.csdn.net/reblue520/article/details/76287113 Zabbix 自带的模块没有 CPU 使用率(百分比)这个监控项,我们可以通 ...
- 5. window.location.href/replace/reload()--页面跳转+替换+刷新
1.window.location=url; window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. 一.最外层top跳转页面,适合用于iframe框架集 ...
- C# WEB.API 接收并解析保存base64格式的图片
using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System. ...