spring和Hibernate整合
首先导入spring和Hibernate的jar包,以及JDBC和c3p0的jar包,
然后就是Hibernate的XML配置文件,不需要加入映射文件,这里用spring容器管理了。
Hibernate的XML文件
之后就是连接池的db.properpies文件。
之后就是包的定义,要实现spring和Hibernate的整合必须要在接口下来实现。
然后就是spring的配置文件app.xml文件。
app.xml文件
文件的开始要加入.xsd的几个文件路径,spring-beans、spring-aop、spring-context、cpring-jdbc、spring-tx(事务的)
引用外部获取连接池的db.properies文件
注入sessionFactory来获取session的。主要用于DAO层获取当前session,以及获取上面连接池的数据连接、加载Hibernate配置文件和映射文件,(路径制定到entity包就可以)
的bean,DAO层和service层(注意这里class限定名是接口的实现类而非接口的)
声明事务(name里的值都是属性)
代码部分:
DAO层,注入session的属性sessionFactory。通过.getCurrentSession()得到当前session
package com.hanqi.dao.impl; import org.hibernate.SessionFactory; import com.hanqi.dao.TBankcardDAO;
import com.hanqi.entity.TBankcard;
//TBankcardDAO接口的实现类
public class TBankcardDAOImpl implements TBankcardDAO { //注入SessionFactory
private SessionFactory sessionFactory ; public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} @Override
public TBankcard getCard(String cardID) { //得到当前的session
TBankcard rtn = (TBankcard) sessionFactory
.getCurrentSession()
.get(TBankcard.class, cardID); return rtn;
} @Override
public void insert(TBankcard card) {
// TODO 自动生成的方法存根
sessionFactory.getCurrentSession().save(card);
} @Override
public void update(TBankcard card) {
// TODO 自动生成的方法存根
sessionFactory.getCurrentSession().update(card);
} @Override
public void delete(TBankcard card) {
// TODO 自动生成的方法存根
sessionFactory.getCurrentSession().delete(card);
} }
service层(TBankcardDAO的属性)
package com.hanqi.service.impl; import java.math.BigDecimal;
import java.util.Date; import com.hanqi.dao.TBankcardDAO;
import com.hanqi.entity.TBankcard;
import com.hanqi.service.TBankcardService; public class TBankServiceImpl implements TBankcardService { //注入Dao
private TBankcardDAO tBankcardDAO; public void settBankcardDAO(TBankcardDAO tBankcardDAO) {
this.tBankcardDAO = tBankcardDAO;
} @Override
public TBankcard getBankcard(String cardID) {
// TODO 自动生成的方法存根
return tBankcardDAO.getCard(cardID);
} @Override
public void addCard(TBankcard card) {
// TODO 自动生成的方法存根
tBankcardDAO.insert(card);
} @Override
public void editCard(TBankcard card) {
// TODO 自动生成的方法存根
tBankcardDAO.update(card);
} @Override
public void deleteCard(TBankcard card) {
// TODO 自动生成的方法存根
tBankcardDAO.delete(card);
} @Override
public void testTX() {
// TODO 自动生成的方法存根
TBankcard t1 = tBankcardDAO.getCard("123456");
tBankcardDAO.delete(t1); //产生异常
TBankcard card = new TBankcard("123457","123","tom","123",new BigDecimal(123.45),new Date(),'1');
tBankcardDAO.insert(card);
} }
测试
package com.hanqi.test; import java.math.BigDecimal;
import java.util.Date; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.hanqi.entity.TBankcard;
import com.hanqi.service.TBankcardService; public class TestMain { public static void main(String[] args) {
// TODO 自动生成的方法存根 ApplicationContext ac=
new ClassPathXmlApplicationContext("app.xml");
TBankcardService c1 = (TBankcardService)ac.getBean("card1"); System.out.println(c1.getBankcard("759074")); TBankcard t1 = new TBankcard("123456","123","tom","123",new BigDecimal(123.45),new Date(),'1');
//c1.addCard(t1);
c1.testTX();
} }
spring和Hibernate整合的更多相关文章
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Spring与Hibernate整合,实现Hibernate事务管理
1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar ...
- Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题
近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心. Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现: org.apache.jaspe ...
- 框架篇:Spring+SpringMVC+hibernate整合开发
前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...
- Spring第九篇【Spring与Hibernate整合】
前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...
- spring+springmvc+hibernate 整合
三大框架反反复复搭了很多次,虽然每次都能搭起来,但是效率不高.最近重新搭了一次,理顺了思路,整理了需要注意的地方,分享出来. 工具:Eclipse(jdk 1.7) spring和hibernate版 ...
- spring和hibernate整合,事务管理
一.spring和hibernate整合开发步骤 1 引入jar文件,用户libarary列表如下 //spring_core spring3..9core\commons-logging-1.2.j ...
- spring和hibernate整合时报sessionFactory无法获取默认Bean Validation factory
Hibernate 3.6以上版本在用junit测试时会提示错误: Unable to get the default Bean Validation factory spring和hibernate ...
- spring+springmvc+hibernate整合遇到的问题
spring+springmvc+hibernate整合遇到的问题2016年10月20日 23:24:03 守望dfdfdf 阅读数:702 标签: ssh学习经历的异常exception异常框架更多 ...
- Java进阶知识25 Spring与Hibernate整合到一起
1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建. 2) hibernate事务交给spring的声明 ...
随机推荐
- Top 命令详解
Top 命令详解 先感受一下top命令的执行结果吧!哈哈-- top - 17:32:34 up 3 days, 8:04, 5 users, load average: 0.09, 0.12, 0. ...
- MySQL--InnoDB索引原理详解
1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分. 先看看几种树形结构: 1 搜索二叉树: ...
- hbase 遇到过的问题
1:下面这个错误是因为我zookeeper忘了启动了,启动你的zookeeper,重新启动下你的hbase hbase(main):002:0> list TABLE ERROR: Can't ...
- PHP中的header()函数作用
PHP 中 header()函数的作用是给客户端发送头信息. 什么是头信息?这里只作简单解释,详细的自己看http协议.在 HTTP协议中,服务器端的回答(response)内容包括两部分:头信息(h ...
- 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】
之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...
- 解决poshytip 表单高度大于屏幕高端 显示问题
Poshy Tip是一款非常友好的信息提示工具,它基于jQuery,当鼠标滑向链接时,会出现一个信息提示条.信息的内容直接可以在HTML里设定也可以是从服务端调用的数据,该插件还提供了很多属性和方法. ...
- Selenium安装失败WebDriverException: Message: 'gechodriver' executable needs to be in PATH
在搭建Python+Selenium自动化测试时,用python通过WebDriver驱动Firefox浏览器时,一直无法执行测试用例. 报错信息:WebDriverException: Messag ...
- 电脑运行msi安装包提示the error code is 2503/2502如何解决
当在电脑中运行msi安装包时,出现the error code is 2503或者2502错误提示,其实是由于没有运行的权限导致的,但是又不能右击以管理员身份运行,那么应该如何操作呢?对于这样的问题, ...
- (UWP开发)在ListView中通过向右滑动展开汉堡菜单
首先在移动APP开发中,手势滑动已经成为一个必备的技能,无论大大小小的APP都需要拥有手势滑动功能.在Android和iOS操作系统的APP中,手势滑动比较普及.然而由于国内有关UWP应用的教程比较少 ...
- Android进阶系列之源码分析Activity的启动流程
美女镇楼,辟邪! 源码,是一个程序猿前进路上一个大的而又不得不去翻越障碍,我讨厌源码,看着一大堆.5000多行,要看完得啥时候去了啊.不过做安卓的总有这一天,自从踏上这条不归路,我就认命了.好吧,我慢 ...