Hibernate/JPA批插入中使用PostgreSQL的(BIG)SERIAL自增主键

栏目: Java · 发布时间: 7年前

内容简介:在PostgreSQL中使用GenerationType.IDENTITY会失效批处理能力。因此使用其(BIG)SERIAL,它的作用类似MySQL的 AUTO_INCREMENT。这里使用GenerationType.SEQUENCE激活批插入处理,通过hi/lo算法优化它。第一步,使用GenerationType.SEQUENCE替代GenerationType.IDENTITY:

在PostgreSQL中使用GenerationType.IDENTITY会失效批处理能力。因此使用其(BIG)SERIAL,它的作用类似 MySQL 的 AUTO_INCREMENT。

这里使用GenerationType.SEQUENCE激活批插入处理,通过hi/lo算法优化它。

第一步,使用GenerationType.SEQUENCE替代GenerationType.IDENTITY:

@Entity
<b>public</b> <b>class</b> TennisPlayer implements Serializable {

    <b>private</b> <b>static</b> <b>final</b> <b>long</b> serialVersionUID = 1L;

    @Id
    <font><i>// This will disable insert batching - AVOID IT! 会失效批处理</i></font><font>
    </font><font><i>// @GeneratedValue(strategy = GenerationType.IDENTITY)</i></font><font>
    
    </font><font><i>// This will work, but better use the below solution 性能不佳</i></font><font>
    </font><font><i>// @GeneratedValue(strategy = GenerationType.AUTO)</i></font><font>

    </font><font><i>// This will allow insert batching and optimizes the identifiers</i></font><font>
    </font><font><i>// generation via the hi/lo algorithm</i></font><font>
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = </font><font>"hilo"</font><font>)
    @GenericGenerator(name = </font><font>"hilo"</font><font>, 
            strategy = </font><font>"org.hibernate.id.enhanced.SequenceStyleGenerator"</font><font>,
            parameters = {
                @Parameter(name = </font><font>"sequence_name"</font><font>, value = </font><font>"sequence"</font><font>),
                @Parameter(name = </font><font>"initial_value"</font><font>, value = </font><font>"1"</font><font>),
                @Parameter(name = </font><font>"increment_size"</font><font>, value = </font><font>"10"</font><font>),
                @Parameter(name = </font><font>"optimizer"</font><font>, value = </font><font>"hilo"</font><font>)
            })
    <b>private</b> Long id;
</font>

这里依靠hi/lo算法在一次数据库往返中获取多个标识符:

Hibernate/JPA批插入中使用PostgreSQL的(BIG)SERIAL自增主键

源代码可以在 这里 找到  。


以上所述就是小编给大家介绍的《Hibernate/JPA批插入中使用PostgreSQL的(BIG)SERIAL自增主键》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms on Strings, Trees and Sequences

Algorithms on Strings, Trees and Sequences

Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99

String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器