Spring-Hibernate DAO命名约定?

oym*_*oym 8 java spring dao hibernate

以下列方式命名DAO是否典型:

UserDAO - interface
UserDAOImpl - implements UserDAO
Run Code Online (Sandbox Code Playgroud)

我想知道它的标准是使用后缀'Impl'来实现,还是更有意义的东西是最佳实践.谢谢.

duf*_*ymo 8

我见过两种惯例:

  1. FooDao用于接口和FooDaoImpl的实现
  2. IFooDao用于接口和FooDao的实现

前者源于CORBA; 后者是Microsoft COM/.NET约定.(感谢Pascal的纠正.)

"不要重复DAO"是一个好主意.我个人认为这篇文章比它需要的更复杂.有一种方法可以在我不喜欢的发现者中反映出来.如果你使用Hibernate,通过示例查询可以很简单地完成它.界面看起来更像是这样的:

package persistence;

import java.io.Serializable;
import java.util.List;

public interface GenericDao<T, K extends Serializable>
{
   T find(K id);
   List<T> find();
   List<T> find(T example);
   List<T> find(String queryName, String [] paramNames, Object [] bindValues);

   K save(T instance);
   void update(T instance);
   void delete(T instance);
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 7

这通常是我使用的.如果您正在创建一个您希望其他人实现但您提供参考实现的接口,那么有时默认前缀DefaultUserDAO会更有意义.

大多数时候我觉得这两个可以互换使用,但在某些情况下,一个提供了比另一个更清晰.