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 - 删除记录的接口[关闭]的主要内容,如果未能解决你的问题,请参考以下文章