0

我有一个用作Category实体的 DAO 的以下 Java 接口:

public interface CategoryDao extends Dao {

    public void save(Category category);

    public void update(Category category);

    public void delete(Category category);

    public List<Category> findAllByType(String type);
}

以上是我设计的,但恐怕delete方法不是很好。这是因为如果我想删除一条记录,我必须先从数据库中获取它——这太过分了。SQL 允许仅通过传递主键(在本例中为 id)来删除记录。如果我提供一个deleteById(int)方法会更好吗?

任何人都可以就如何为 ORM 实体提供 DAO 删除方法提出正确的方法(可能是最简单/最快的方法)?

4

1 回答 1

1

你可以做一个,或另一个,或两者兼而有之。在任何情况下,Hibernate 都需要一个实体实例才能使用session.delete(). 您可以在不使用从数据库加载实体的情况下获取这样的实例session.load(),这会返回一个延迟加载的代理。

所以 deleteById() 方法将使用

Category c = (Category) session.load(Category.class, id);
delete(c);
于 2013-04-16T18:17:31.607 回答