【问题标题】:java orm/data access object - interface for deleting a record [closed]java orm/data access object - 删除记录的接口[关闭]
【发布时间】:2013-04-09 06:16:41
【问题描述】:

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

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 删除方法提出正确的方法(可能是最简单/最快的)?

【问题讨论】:

  • @JBNizet 它是休眠的,如果重要的话。

标签: java orm interface dao


【解决方案1】:

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

所以 deleteById() 方法将使用

Category c = (Category) session.load(Category.class, id);
delete(c);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多