繁体   English   中英

我应该更喜欢使用 JPA - 纯 SQL 还是 JPQL 以及如何使用 JPQL 和实体创建/删除表

[英]What should I prefer using JPA - pure SQL or JPQL and how to create/delete table using JPQL and Entity

我在我的DAO 中使用entityManager

创建表,我正在使用:

String CREATE_TABLE = "CREATE TABLE if not exists cats (name varchar(255) PRIMARY KEY NOT NULL, age int NOT NULL);

删除我正在使用的表:

String DELETE_TABLE = "DROP TABLE examples";

执行它,我正在使用:

entityManager.createNativeQuery(sql).executeQuery();

我如何使用JPQL同样的事情(如果需要,我有一个@Entity )?

我应该更喜欢哪种方法 - createNativeQuery() + SQLcreateQuery() + JPQL

您不能像jpql 规范所说的那样创建表。 当涉及到查询时,这取决于。

jpql优点:

  1. Jpql 利用映射(懒惰/急切加载、相关性) - 它使用您已经定义的内容。 在 SQL 中,您必须以某种方式映射结果。
  2. 查询可以存储在缓存中以提供更好的性能。
  3. 在查询之前不需要刷新持久性上下文。
  4. 您可以使用 IDE 与查询一起更改实体的名称。 它们更容易维护。
  5. DBMS 不可知 - 您可以随时更改数据库,它会起作用(这也可能是一个缺点 - 语法受 sql 标准限制)。

SQL优势:

  1. 您可以使用特定于供应商的方言,它克服了 jpql 验证的缺点。
  2. 支持 DML 操作,例如裁剪或创建表格。 还有索引和分区。
  3. 您可以更好地控制对数据库的查询。

总结一下:除非您需要可能简化实施和/或提高性能的供应商特定查询,否则 jpql 应该是选择 模式建模不应该在运行时完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM