混乱阅读JPA迷你书中的段落

  • 本文关键字:段落 JPA 混乱 jpa jpa-2.0
  • 更新时间 :
  • 英文 :


我已经在JPA Mini Book中阅读了此段落:

"分配= 53"表示JPA存储的ID数量 在缓存中。这样的作品:启动应用程序时JPA将会 在内存中分配指定数量的ID,并将共享这些 每个新的持续实体的值。在上面的代码中,ID将 从10(初始值(到63(初始值 分配(。 当分配的ID结束数量时,JPA将从 数据库并在内存中分配53个ID。这种分配的行为 内存中的ID是优化服务器内存的好方法,因为 JPA不需要在每个插入的情况下触发数据库 像@identity方法一样获取创建的ID。

问题:

  1. 阅读when the application is started JPA will allocate in memory the specified number of ids..后,我有反射,他们谈论哪个JPA?NetBeansglassfish的JPA?耳朵是否包含JPA?
  2. 在此句子When the number of allocated ids ends JPA will request from the database and allocate in memory 53 more ids中,数据库中的JPA请求将是什么?
  3. 在这里他们说since JPA will not need to trigger the database with every insert so as to get the created id just like with the @Identity approach,使用IDENTITY是否意味着JPA不会使用CACHE,并且使用SEQUENCE表示JPA将使用CACHE?使用这种策略(序列(并不意味着我们在数据中有一致性的风险吗?假设我们要更新20行,以便JPA尚未调用数据库,而另一个用户正在更新相同的行看到旧数据,这不是问题吗?我想念什么?请向我解释一下。预先感谢。

1-这是任何提供商都必须坚持,休眠或eclipse链接或任何其他JPA实现的JPA规范(我不知道您提到的那些(

2-我们有能够自动生成实体ID的方法(对应于表主键(,插入1-自动:这意味着自动增量,2 -sequence_generator:使用db sequence .next((,3 -table_generator:类似于序列,但使用一个带有2列的表,一个是实体名称(或相应的名称(,另一个是最大ID值,4-身份:它使用某些数据库中存在的表属性,称为标识符列。..现在回到您的问题时,当您使用分配= 53插入新记录并使用序列或表生成器时,则该值中的值或表中的值将使用此值53(因此变为63(,然后将表递增。然后,JPA将能够使用IDS 10-> 63插入实体,而不会再次击中DB

3-关于您的一致性问题,所有主题都是关于插入新行不更新和有关身份的新行,分配大小仅适用于序列和表生成器,因此,如果存在识别性,则没有任何缓存

最新更新