相关疑难解决方法(0)

有什么区别:使用JPA @TableGenerator的序列id,@ GeneratedValue与数据库Auto_Increment

Q1.:使用数据库应用序列ID之间的区别是什么

一个.

CREATE TABLE Person
(
   id long NOT NULL AUTO_INCREMENT
   ...
   PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

B.

@Entity
public class Person {
    @Id
    @TableGenerator(name="TABLE_GEN", table="SEQUENCE_TABLE", pkColumnName="SEQ_NAME",
        valueColumnName="SEQ_COUNT", pkColumnValue="PERSON_SEQ")
    @GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
    private long id;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的系统高度并发.由于我的数据库是Microsoft SQL服务器,我认为它不支持@SequenceGenerator,所以我必须坚持使用@TableGenerator容易出现并发问题.

Q2.这里的链接(http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Advanced_Sequencing)表明B可能会遇到并发问题,但我不理解建议的解决方案.如果有人能向我解释如何避免与B的并发问题,我将不胜感激.以下是他们解决方案的片段:

If a large sequence pre-allocation size is used this becomes less of an issue, because the sequence table is rarely accessed.

Q2.1:我们在这里讨论的分配大小是多少?我应该做的allocationSize=10还是allocationSize=100? …

java sql sql-server jpa eclipselink

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

eclipselink ×1

java ×1

jpa ×1

sql ×1

sql-server ×1