zoukankan      html  css  js  c++  java
  • 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();
    	}
    
    }
    

      

  • 相关阅读:
    动态更新活动条件
    使用本地服务异步执行自定义活动业务逻辑
    隐藏自定义复合活动的内部实现
    如何开发一个基本的复合活动
    HTML5性能之争 —— 单线程:缺点还是特点?
    CDNJS —— Web 上最快的 JavaScript 资源库
    Comfusion 4.1 发布,桌面 Linux 发行
    FreeBSD 9.1 正式版已经可以下载
    Squid Analyzer 5.0 发布,Squid日志统计
    MemSQL 1.8 发布,号称最快的关系数据库
  • 原文地址:https://www.cnblogs.com/liuyanzeng/p/6196242.html
Copyright © 2011-2022 走看看