Java 用于存储结果集中的行的类的名称是什么?
出于性能原因,许多报表查询在ORM托管对象之外执行 为了存储结果,我使用每个查询类一个来保存DB访问方法和服务之间的数据行 例如,在Java/Hibernate/Spring中:Java 用于存储结果集中的行的类的名称是什么?,java,design-patterns,orm,naming-conventions,Java,Design Patterns,Orm,Naming Conventions,出于性能原因,许多报表查询在ORM托管对象之外执行 为了存储结果,我使用每个查询类一个来保存DB访问方法和服务之间的数据行 例如,在Java/Hibernate/Spring中: @Repository public interface DataRepository extends JpaRepository<DataDAO, Long> { @Query("select new com.evil.db.XXX(...) from #{#entityName} where
@Repository
public interface DataRepository extends JpaRepository<DataDAO, Long> {
@Query("select new com.evil.db.XXX(...) from #{#entityName} where ...")
List<XXX> findXXX(...);
XXX的名字是什么?是不是?在模式手册和框架参考手册中如何命名中间存储类?这是一个简单的词,但这个词太笼统了
我通常将这些类作为内部静态类来持有,并且不需要给出适合于包含数据的名称
但是我喜欢为类名添加后缀,如果它是顶级类来表示它的角色,就像传统上为DAO/Service/Controller/etc所做的那样。假设您使用的是存储库模式,那么您不应该有这种命名问题。存储库模式通常由名为IRepository的接口定向,也可以是一个抽象类,表示数据库上的一般操作,如下C代码所示:
public interface IRepository<T>
{
T GetById(int id);
IEnumerable<T> List(Expression<Func<T, bool>> predicate);
void Add(T entity);
void Delete(T entity);
void Update(T entity);
}
在您的情况下,由于您需要一些自定义查询,您应该为您的特定情况创建一个接口。以下示例引用了产品域IPProductRepository的特定存储库,该存储库强制实施IRepository
最后,您将创建一个实现IRepositoryProduct的具体类
使用这种方法,您的方法不应该有命名问题,因为它们将遵循接口约定。从数据库加载的IMO对象不需要任何附加后缀。例如,调用类User、Location等没有什么错。不幸的是,您错过了我的问题。。。我查询具有不同签名的数据,然后是任何ORM管理的实体,并且不知道表示此数据的类的名称。。。看看selectnewcom.evil.db.XXX。。。上面的语法…@gavenkoa,现在我明白了!它通常被称为模型。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public interface IProductRepository : IRepository<Product>
{
Product GetProductBySomething(string somemething);
IEnumerable<Product> GetAvailableProducts();
}
public class ProductRepository : IProductRepository
{
public void Add(Product entity)
{
// ...
}
public void Delete(Product entity)
{
// ...
}
public IEnumerable<Product> Get(Expression<Func<Product, bool>> predicate)
{
// ...
}
public Product Get(int id)
{
// ...
}
public IEnumerable<Product> GetAvailableProducts()
{
// ...
}
public Product GetProductBySomething(string somemething)
{
// ...
}
public void Update(Product entity)
{
// ...
}
}
public Product Get(int id)
{
// ...
}
public void Update(Product entity)
{
// ...
}
}