我想用hibernate在列表上管理CRUD。这是一个好习惯吗?

时间:2012-02-28 07:48:36

标签: hibernate

我想保留一个列表并在数据库中更新其更改 基本上,
 为了保存 - 我迭代所有对象并保存每个对象 为了删除 - 每次删除一个objhect时,我都会保留该对象的副本,以便稍后在另一个列表中使用。 当我保存时,我也迭代它并删除那些元素。

private boolean saveAll() {
    Session session = null;
    boolean successful = false;
    try {
        session = sessionFactory.openSession();
        session.beginTransaction();

        for (myObject myO : myObjectsList) {
            session.save(myO);
        }

        for (myObject removedObject : toBeRemovedList) {
            session.delete(removedObject);
        }

        session.getTransaction().commit();
        successful = true;
    } catch (HibernateException e) {
        successful = false;
    } finally {
        if (session != null && session.isOpen()) {
            session.close();
        }
    }

    return successful;
}

现在我打算这样称呼它:

if (saveAll()){
    toBeRemovedList.clear()
}

有何评论?

感谢。

1 个答案:

答案 0 :(得分:1)

你可以用保存做很多事情。但是,使用以下HQL

可以改进删除功能
Query q = createQuery("delete from YourObjectName where id in (:idList) ");
q.setParameterList("idList", idList);
q.executeUpdate();

您可以找到java docs here

此处只会执行一个查询来删除列表中的所有项目。