如果只从db获取数据,我是否需要实体?

Luc*_*cas 2 java dao jpa relational-database

希望简单的问题:

  • 如果我有一个应该只从数据库中获取数据的应用程序(它不会持久存在)?
  • 我是否需要由@ Entity-annotated类集合提供的精确db结构?
  • 我还需要实体吗?
  • 或者我可以只使用DAO并执行以下操作:

    ObjectFromDb ob = dao.find(someProperty);

    鉴于ObjectFromDb只是一个没有单个JPA注释的常规POJO?

我把它谷歌了一会儿,但它似乎是太具体的问题......
感谢任何建议!

kos*_*tja 5

您不需要实体进行查询,但它们可以让您的生活更轻松.

您可以使用常规SQL进行查询.

您还可以定义一些实体,但仅查询其数据的子集 - 即投影查询.

您还可以将JPA构造函数命令与投影查询一起使用,以直接映射到结果对象:

List<MyClass> dtos = em.createQuery("SELECT NEW com.example.MyClass( e.name, e.data) FROM Entity e").resultList();
Run Code Online (Sandbox Code Playgroud)

编辑:使用带注释的实体,您可以使用SQL中不可用的JPQL功能,例如路径导航.适当注释的实体可以阐明数据库映射.

实体不需要映射表的所有列,只要包含id,就可以使用您喜欢的任何子集.