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

时间:2014-01-20 13:54:26

标签: java jpa relational-database dao

希望简单的问题:

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

    ObjectFromDb ob = dao.find(someProperty);

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

我在短时间内谷歌了,但似乎是太具体的问题......
感谢您的任何建议!

1 个答案:

答案 0 :(得分:5)

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

您可以use regular SQL查询。

您也可以定义一些实体,但只查询其数据的子集 - 即投影查询。

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

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

编辑:使用带注释的实体,您可以使用SQL中不可用的JPQL功能,例如:路径导航。正确注释的实体可以澄清数据库映射。

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