java orm/data access object - 删除记录的接口[关闭]

Posted

技术标签:

【中文标题】java orm/data access object - 删除记录的接口[关闭]【英文标题】:java orm/data access object - interface for deleting a record [closed] 【发布时间】: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 它是休眠的,如果重要的话。 【参考方案1】:

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

所以 deleteById() 方法将使用

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

【讨论】:

以上是关于java orm/data access object - 删除记录的接口[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

微信网页授权Java实现

js如何获取object数据类型里的键值

从经典 ASP 连接到 MS Access 数据库

Java中的多级地图[重复]

java比较两个对象是否相等?

如何更好地重构可以在 java 中返回 null 的方法链?