spring和Hibernate整合

来源:互联网 发布:gimgoon戏耍淘宝权 编辑:程序博客网 时间:2024/05/22 23:47

首先导入spring和Hibernate的jar包,以及JDBC和c3p0的jar包,

spring和Hibernate整合

然后就是Hibernate的XML配置文件,不需要加入映射文件,这里用spring容器管理了。

Hibernate的XML文件

spring和Hibernate整合

之后就是连接池的db.properpies文件。

spring和Hibernate整合

之后就是包的定义,要实现spring和Hibernate的整合必须要在接口下来实现。

spring和Hibernate整合

然后就是spring的配置文件app.xml文件。

app.xml文件

文件的开始要加入.xsd的几个文件路径,spring-beans、spring-aop、spring-context、cpring-jdbc、spring-tx(事务的)

引用外部获取连接池的db.properies文件

spring和Hibernate整合

注入sessionFactory来获取session的。主要用于DAO层获取当前session,以及获取上面连接池的数据连接、加载Hibernate配置文件和映射文件,(路径制定到entity包就可以)

spring和Hibernate整合

的bean,DAO层和service层(注意这里class限定名是接口的实现类而非接口的

spring和Hibernate整合

声明事务(name里的值都是属性)

spring和Hibernate整合

代码部分:

DAO层,注入session的属性sessionFactory。通过.getCurrentSession得到当前session

spring和Hibernate整合

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 {//注入SessionFactoryprivate SessionFactory   sessionFactory  ;public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}@Overridepublic TBankcard getCard(String cardID) {//得到当前的sessionTBankcard rtn = (TBankcard)sessionFactory.getCurrentSession.get(TBankcard.class, cardID);return rtn;}@Overridepublic void insert(TBankcard card) {// TODO 自动生成的方法存根sessionFactory.getCurrentSession.save(card);}@Overridepublic void update(TBankcard card) {// TODO 自动生成的方法存根sessionFactory.getCurrentSession.update(card);}@Overridepublic 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 {//注入Daoprivate TBankcardDAO  tBankcardDAO;public void settBankcardDAO(TBankcardDAO tBankcardDAO) {this.tBankcardDAO = tBankcardDAO;}@Overridepublic TBankcard getBankcard(String cardID) {// TODO 自动生成的方法存根return tBankcardDAO.getCard(cardID);}@Overridepublic void addCard(TBankcard card) {// TODO 自动生成的方法存根tBankcardDAO.insert(card);}@Overridepublic void editCard(TBankcard card) {// TODO 自动生成的方法存根 tBankcardDAO.update(card);}@Overridepublic void deleteCard(TBankcard card) {// TODO 自动生成的方法存根tBankcardDAO.delete(card);}@Overridepublic 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;}}

本文为头条号作者发布,不代表今日头条立场。

0 0
原创粉丝点击