• Hibernate的generator属性之意义


    Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。

    1、identity:用于MySql数据库。特点:递增 

    1. id name="id" column="id">   
    2.     generator class="identity"/>   
    3. < /id

    注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

    2、sequence:用于Oracle数据库 

    1. < id name="id" column="id">   
    2.    < generator class="sequence">   
    3.      < param name="sequence">序列名< /param>   
    4.    < /generator>   
    5. < /id> 

    3、native:跨数据库时使用,由底层方言产生。 
    Default.sequence为hibernate_sequence

    1. < id name="id" column="id">   
    2.    < generator class="native"/>   
    3. < /id>   

    注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。 
    如果Oracle中没有该序列,连Oracle数据库时会报错。

    4、hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。

    1. < id name="id" column="id">   
    2.     < generator class="hilo">   
    3.       < param name="table">high_val< /param>   
    4.        < param name="column">nextval< /param>   
    5.       < param name="max_lo">5< /param>   
    6.     < /generator>   
    7. < /id>  

    5、sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。 

    1. < id name="id" column="id">   
    2. < generator class="hilo">   
    3. < param name="sequence">high_val_seq< /param>   
    4. < param name="max_lo">5< /param>   
    5. < /generator>   
    6. < /id> 

    6、assigned:用户自定义id; 

    1. < id name="id" column="id">   
    2. < generator class="assigned"/>   
    3. < /id> 

    7、foreign:用于一对一关系共享主健时,两id值一样。

  • 相关阅读:
    Codeforces461E Appleman and a Game 做题心得
    关于贪心问题的处理
    各种容斥 笔记
    博弈论 笔记
    家庭多个路由器组网方案(AP+AC)
    21.06.06 训练赛
    Redirect...
    Web Api实践系列(三)route特性使用
    《Red Tuner》隐私政策
    前缀和-1915. 最美子字符串的数目
  • 原文地址:https://www.cnblogs.com/xtdxs/p/7114924.html
Copyright © 2020-2023  润新知