dljd_027_增改删在同一个事务中的默认执行顺序

Posted 1024军团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dljd_027_增改删在同一个事务中的默认执行顺序相关的知识,希望对你有一定的参考价值。

一、测试增删改在同一个事务中的默认执行顺序示例

package edu.aeon.test;


import org.hibernate.Session;
import org.hibernate.Transaction;

import edu.aeon.aeonutils.GetSessionUtil;
import edu.aeon.beans.Student;
/**
 * [说明]:测试增删改在同一事务环境下的默认执行顺序
 * 测试结果:默认执行顺序为:增加C、更新(U)、删除(D)
 * @author aeon
 *
 */
public class TestCRUD {
    public static void testCUD(/*Student student*/){
        Transaction transaction=null;
        try {
            Session session = GetSessionUtil.getSession();
            transaction = session.getTransaction();
            /**开启事务*/
            transaction.begin();
            /**一、执行删除操作(将stuid为1的学生删除)*/
            Student student1 =session.get(Student.class,1);
            session.delete(student1);
            /**二、执行更新操作(将stuid为2的用户的姓名改为:aeon)*/
            Student student2=session.get(Student.class, 2);
            student2.setStuName("aeon");
            session.update(student2);
            /**三、执行插入操作(插入一条用户名为:tuling、年龄为:30)*/
            Student student3=new Student("tuling",30);
            session.save(student3);
            transaction.commit();
            System.out.println("操作成功!");
        } catch (Exception e) {
            e.printStackTrace();
            transaction.rollback();
            System.out.println("操作失败!");
        }
    }
    public static void main(String[] args) {
        testCUD();
    }
}

 

首先在执行之前我们看一下数据库中的数据截图:

  

执行结果截图:

  

我们再来看下数据库执行前后的结果对比:

  

测试结果:

  如果增删改在同一个事务中,那么其默认执行顺序为增C改U删D!

二、我们知道默认的一般我们可以人为去修改、那么怎么修改呢?(session.flush())

  修改方式是用session.flush()、这里需注意以session.flush()为分界线其前面的操作也按照默认执行顺序走!

 

以上是关于dljd_027_增改删在同一个事务中的默认执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

dljd_(021-025)_事务及_CRUD

django入门 11 网页关联MySQL单字段表(增改删)

三DML 增改删

Linq To Sql 增改删

dljd_017_使用PreparedStatement执行模糊查询

dljd_(007_008)_jdbc执行DQL/DML/DDL语句