在hibernate会话上设置保存点

时间:2012-12-06 06:25:16

标签: java hibernate session savepoints

我是Hibernate的新手。我的项目需要以下场景。

例如,我插入了20个类TestHBDemo的记录数据。

hbsession = HibernateUtil.getCurrentSession();
tx = hbsession.beginTransaction();
for(int index = 0; index < 20; ++index){
    TestHBDemo obj = new TestHBDemo();
    //setting data

    hbsession.save(obj);
}
tx.commit();

如何通过省略中间记录

仅插入1 - 10和15 - 20条记录
hbsession = HibernateUtil.getCurrentSession();
tx = hbsession.beginTransaction();
for(int index = 0; index < 20; ++index){
    TestHBDemo obj = new TestHBDemo();
    //setting data

    hbsession.save(obj);

    if(somecondition)
    // setting save points
}
//omitting unnecessary insertions
tx.commit();

请优先在hibernate中提供解决方案,而不是使用javax.sql。

感谢.....

2 个答案:

答案 0 :(得分:-1)

我是通过使用以下代码实现的:

hbsession = HibernateUtil.getCurrentSession();
    tx = hbsession.beginTransaction();
    for(int index = 0; index < 20; ++index){

    TestHBDemo obj = new TestHBDemo();
    //setting data

        hbsession.save(d5campaingObj);
        if(index == 9){
            hbsession.flush();
            hbsession.clear();
        }
        if(index == 14){
            hbsession.clear();               
        }
    }
tx.commit();

但我在等待专家的更好方法。 感谢....

答案 1 :(得分:-1)

hbsession = HibernateUtil.getCurrentSession();
tx = hbsession.beginTransaction();
for(int index = 0; index < 20; ++index){
    TestHBDemo obj = new TestHBDemo();
    //setting data
    **if(index>10 && inxex<15)
        continue**;
    hbsession.save(obj);
    // setting save points
}
tx.commit();