Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
正确使用JPA2的方法_Jpa_Jpql - Fatal编程技术网

正确使用JPA2的方法

正确使用JPA2的方法,jpa,jpql,Jpa,Jpql,我看到某人(James Sutherland)对某人说他们正在“执行一个delete all JPQL查询。这基本上类似于执行您自己的SQL,您负责正确执行查询以维护您的约束 这不是在JPA中删除对象的正常方式。在JPA中,您通常读取对象,然后对其调用remove() 我想知道这是不是真的;基于移除不仅仅是简单表的难度,我开始认为这是正确的 到目前为止,我的想法是这样做: 执行select语句,不管它们有多特别(例如 选择学生课程>4且分数>=60且 2011年至2012年期间的学生注册) 显示

我看到某人(James Sutherland)对某人说他们正在“执行一个delete all JPQL查询。这基本上类似于执行您自己的SQL,您负责正确执行查询以维护您的约束

这不是在JPA中删除对象的正常方式。在JPA中,您通常读取对象,然后对其调用remove()

我想知道这是不是真的;基于移除不仅仅是简单表的难度,我开始认为这是正确的

到目前为止,我的想法是这样做:

  • 执行select语句,不管它们有多特别(例如
    选择学生课程>4且分数>=60且
    2011年至2012年期间的学生注册)
  • 显示/编辑/删除 对象(因此EntityManager合并/持久化/删除)
  • 冲洗、起泡等

  • 这听起来是否合理,作为一种如何使用JPA或我是否偏离基准的方法?

    这里讨论了移除的级联:。例如,当使用乐观锁定时,批量更新不会更新版本列。因此,批处理更新/删除在JPA中有点缺陷

    但我不会说这不是JPA中删除对象的正常方式。当我需要根据某些条件删除2个、20个或200个对象时,首先选择并获取它们,只是在每个对象上调用
    remove()
    ,这在大多数情况下都是一个坏主意


    由于某种原因,所有批更新/删除都出现在规范中。

    此处讨论了删除的级联:。例如,当使用乐观锁定时,批量更新不会更新版本列。因此,批处理更新/删除在JPA中有点缺陷

    但我不会说这不是JPA中删除对象的正常方式。当我需要根据某些条件删除2个、20个或200个对象时,首先选择并获取它们,只是在每个对象上调用
    remove()
    ,这在大多数情况下都是一个坏主意


    在所有批量更新/删除都出于某种原因出现在规范中之后。

    是的,这就是JPA的想法。加载对象并修改它们。是的,这就是JPA的想法。您可以加载对象并修改它们。感谢您的快速响应。因此,我想我们必须回到使用结构化查询语言,然后再进行删除/更新?在我看来,这几乎违背了ORM框架的目的。@CodesNChaos:我从来没有说过!SQL具有JPA QL中批量更新/删除的所有缺点,但没有增加太多好处(可能稍微快一点)。我想说的是,根据纯面向对象的JPA方法的语义,批量更新并不总是表现得很精确。但SQL都没有。附言:17分钟不是一个快速的回应,所以;-)。我质疑查询语言(无论是SQL还是JPQL)的使用的原因是,它要求程序员深入研究查询语言,从而跟踪级联和外键约束。也就是说,我明白你关于批量删除的观点,为了删除而发送1000000条记录是愚蠢的。:)谢谢你的快速回复。因此,我想我们必须回到使用结构化查询语言,然后再进行删除/更新?在我看来,这几乎违背了ORM框架的目的。@CodesNChaos:我从来没有说过!SQL具有JPA QL中批量更新/删除的所有缺点,但没有增加太多好处(可能稍微快一点)。我想说的是,根据纯面向对象的JPA方法的语义,批量更新并不总是表现得很精确。但SQL都没有。附言:17分钟不是一个快速的回应,所以;-)。我质疑查询语言(无论是SQL还是JPQL)的使用的原因是,它要求程序员深入研究查询语言,从而跟踪级联和外键约束。也就是说,我明白你关于批量删除的观点,为了删除而发送1000000条记录是愚蠢的。:)