单独的hibernate使用DAO调用save()等方法是没有进行事务的开启和关闭的,在service层需要手工进行事务的开启和关闭,同事数据库session连接打开和关闭也需要手动来处理
public void saveMedicines(List<Medicine> ms) {
Session session = null;
if (ms != null && ms.size() > 0) {
try {
session = HibernateUtil.getSession(); // 获取Session,打开数据库连接
session.beginTransaction(); // 开启事物
Medicine medicine = null; // 创建药品对象
// 循环获取药品对象
for (int i = 0; i < ms.size(); i++) {
medicine = (Medicine) ms.get(i); // 获取药品
session.save(medicine); // 保存药品对象
// 批插入的对象立即写入数据库并释放内存
if (i % 10 == 0) {
session.flush();
session.clear();