首先,找到一个过去完成开发的小型账户管理系统,该系统的ORM框架是MyBatis,本次实验的目的是将其换成Hibernate,并且成功实现增删改查能力。
在Maven的POM.xml文件夹中添加hibernate所需要的相关依赖。
然后,编写主配置文件和对象映射文件。
然后,由于本系统使用了tkMyBatis,所以需要重新编写dao层接口。
然后,对HibernateBillDao接口进行实现。
实现代码如下:
package com.sbbs.dao.impl;
import com.sbbs.bean.Bill;
import com.sbbs.dao.HibernateBillDao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.io.Serializable;
import java.util.List;
/**
* Created by shaowei on 2021/6/16.
*/
public class HibernateBillDaoImpl implements HibernateBillDao {
private Configuration conf;
private SessionFactory sessionFactory;
{
conf = new Configuration().configure();
sessionFactory = conf.buildSessionFactory();
}
@Override
public List<Bill> searchByMsg(Integer typeId, String fromDate, String toDate) {
Session session = sessionFactory.openSession();
Query query = session.createQuery("from Bill where typeId=" + typeId + "and billTime>=" + fromDate + "and billTime<=" + toDate);
List<Bill> list = query.list();
session.close();
return list;
}
@Override
public List<Bill> searchAll() {
Session session = sessionFactory.openSession();
Query query = session.createQuery("from Bill");
session.close();
return query.list();
}
@Override
public Bill getById(Integer id) {
Session session = sessionFactory.openSession();
Bill bill = session.get(Bill.class, id);
session.close();
return bill;
}
@Override
public int insert(Bill bill) {
Session session = sessionFactory.openSession();
session.save(bill);
session.close();
return 1;
}
@Override
public int updateById(Bill newBill) {
Session session = sessionFactory.openSession();
Bill bill = session.get(Bill.class, newBill.getId());
bill.setTitle(newBill.getTitle());
bill.setBillTime(newBill.getBillTime());
bill.setExplain(newBill.getExplain());
bill.setPrice(newBill.getPrice());
bill.setBillType(newBill.getBillType());
session.update(bill);
session.close();
return 1;
}
@Override
public int deleteById(Integer id) {
Session session = sessionFactory.openSession();
Bill bill = session.get(Bill.class, id);
session.delete(bill);
session.close();
return 1;
}
}
然后,先用JUnit进行单元测试。
searchAll方法测试结果:
getById方法测试结果:
insert方法测试:
updateById方法测试:
最后,对系统进行系统测试:
查询功能测试结果:
更新功能测试:
插入功能测试:
删除功能测试:
至此,成功将系统框架切换为hibernate框架。