首先导入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(); } }