JAVA技巧(Hibernate執(zhí)行數(shù)據(jù)庫操作的順序)

字號:

hibernate按照save(insert),update、delete順序提交相關(guān)操作
    /**
    * 測試assigned主鍵生成策略
    *
    */
    public void testSave6() {
    Session session = null;
    Transaction tx = null;
    try {
    session = HibernateUtils.getSession();
    tx = session.beginTransaction();
    User3 user = new User3();
    user.setId("001");
    user.setName("張三");
    session.save(user);
    user.setName("王五");
    session.update(user);
    User3 user3 = new User3();
    user3.setId("002");
    user3.setName("李四");
    session.save(user3);
    //Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
    //Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
    //Hibernate: update t_user3 set name=?, password=?, create_time=?, expire_time=? where user_id=?
    //hibernate按照save(insert),update、delete順序提交相關(guān)操作
    tx.commit();
    }catch(Exception e) {
    e.printStackTrace();
    tx.rollback();
    }finally {
    HibernateUtils.closeSession(session);
    }
    }
    /**
    * 測試assigned主鍵生成策略
    *
    */
    public void testSave7() {
    Session session = null;
    Transaction tx = null;
    try {
    session = HibernateUtils.getSession();
    tx = session.beginTransaction();
    User3 user = new User3();
    user.setId("003");
    user.setName("張三");
    session.save(user);
    user.setName("王五");
    session.update(user);
    session.flush();
    User3 user3 = new User3();
    user3.setId("004");
    user3.setName("李四");
    session.save(user3);
    //Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
    //Hibernate: update t_user3 set name=?, password=?, create_time=?, expire_time=? where user_id=?
    //Hibernate: insert into t_user3 (name, password, create_time, expire_time, user_id) values (?, ?, ?, ?, ?)
    //因為我們在session.udpate(user)后執(zhí)行了flush,所以在清理緩存時執(zhí)行flush前的sql不會生成
    //sql會按照我們的意愿執(zhí)行
    tx.commit();
    }catch(Exception e) {
    e.printStackTrace();
    tx.rollback();
    }finally {
    HibernateUtils.closeSession(session);
    }
    }
    }