如果仅从数据库获取数据,我是不是需要实体?
Posted
技术标签:
【中文标题】如果仅从数据库获取数据,我是不是需要实体?【英文标题】:Do I need entities if only getting data from db?如果仅从数据库获取数据,我是否需要实体? 【发布时间】:2014-02-09 17:36:05 【问题描述】:希望简单的问题:
如果我有一个应用程序应该只从 数据库(它不持久化任何东西)? 我是否需要由一组提供的 db 的精确结构 @Entity 注释的类? 我还需要实体吗?或者我可以只使用 DAO 并执行以下操作:
ObjectFromDb ob = dao.find(someProperty);
鉴于 ObjectFromDb 只是一个没有单个 JPA 的常规 POJO 注解?
我用谷歌搜索了一会儿,但问题似乎太具体了...感谢您的建议!
【问题讨论】:
【参考方案1】:您不需要实体进行查询,但它们可以让您的生活更轻松。
您可以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。
【讨论】:
它们如何让我的生活更轻松?在我的情况下使用实体而不是 POJO 有什么优势? 因为您可以将 JPQL 与带注释的实体一起使用,因此可以使用路径导航。以上是关于如果仅从数据库获取数据,我是不是需要实体?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取数据列表,特定日期仅从每个日期获取 6 条记录而不是更多
仅从 sequelize 原始查询而不是模型实例中获取 dataValues