需求:从jsp页面上获取到一系列数据,然后将这些数据插入到五张表中,例如:
从页面上获取到5个name,{name1,name2,name3,name4,name5};数据库中有5张表,{t1,t2,t3,t4,t5};
当将name1插入到t1时,会自动生成一个id,我们定义为id1,然后将name2插入t2,同样生成一个id2,接下来将name3和id1插入到t3,生成id3,同样将name4和id2插入t4,生成id4,最后将id3和id4以及name5插入t5.
上面的操作都是在DAO层的一个方法里面写,如何做,高手指点下!谢谢!

解决方案 »

  1.   

    不知道合楼主心意不?
    try {
      conn.setAutoCommit(false);  //process your sql command.  conn.commit();
    } catch(Exception e) {
      conn.rollback();
    }
      

  2.   

    楼上的意思是把对5张表的操作放在一个事务里面,我的意思是给t1和t2插入的时候开启一个事务,完毕之后再开启个事务,去查询t1,t2,获取自动生成的id,查询到之后,继续开启个事务,给t3和t4表里面插入数据,插入完毕,继续开启事务去查询t3,t4表里自动生成的id,查到后,最后开启个事务将id3和id4插入到t5中,如何实现?谢谢!
      

  3.   

    写在同一个方法中?
    Session session = null; Transaction tx = null; public void changeLimits(Userslogin u1,Userslogin2 u2,Userslogin3 u3) {
    try {
    session = HibernateSessionFactory.getSession();
    tx = session.beginTransaction();
    session.saveOrUpdate(u1);
    tx.commit();
    tx = session.beginTransaction();
    session.saveOrUpdate(u2);
    tx.commit();
    tx = session.beginTransaction();
    session.saveOrUpdate(u3);
    tx.commit();
    } catch (Exception e) {
    e.printStackTrace();
    if (tx != null) {
    tx.rollback();
    tx = null;
    } } finally {
    if (session != null) {
    session.close();
    session = null;
    }
    }
    }
    保险一点就把tx换成tx1,tx2。Transaction tx1 = Transaction tx2 =
    不知道这么写可不可以
      

  4.   

    大哥,我用的是struts+spring+JDBC的,能改下吗?谢谢!