Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于存储结果集中的行的类的名称是什么?_Java_Design Patterns_Orm_Naming Conventions - Fatal编程技术网

Java 用于存储结果集中的行的类的名称是什么?

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

出于性能原因,许多报表查询在ORM托管对象之外执行

为了存储结果,我使用每个查询类一个来保存DB访问方法和服务之间的数据行

例如,在Java/Hibernate/Spring中:

@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)
    {
        // ...
    }
}