spring和Hibernate整合

首先导入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 {

//注入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;
}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值