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();
	}

}

  

posted @ 2016-12-19 08:56  琢磨先生  阅读(674)  评论(0编辑  收藏  举报
AmazingCounters.com