zoukankan      html  css  js  c++  java
  • Hibernate的generator属性

    <h1>
        <span class="link_title"><a href="/zzh87615/article/details/6091655">
        Hibernate的generator属性         
           
        </a>
        </span>
    
         
    </h1>
    
        <div class="article_manage clearfix">
        <div class="article_l">
            <span class="link_categories">
            标签:
              <a href="http://www.csdn.net/tag/generator" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">generator</a><a href="http://www.csdn.net/tag/hibernate" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">hibernate</a><a href="http://www.csdn.net/tag/class" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">class</a><a href="http://www.csdn.net/tag/postgresql" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">postgresql</a><a href="http://www.csdn.net/tag/%e6%95%b0%e6%8d%ae%e5%ba%93" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">数据库</a><a href="http://www.csdn.net/tag/oracle" target="_blank" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_tag']);">oracle</a>
            </span>
        </div>
        <div class="article_r">
            <span class="link_postdate">2010-12-22 14:20</span>
            <span class="link_view" title="阅读次数">22561人阅读</span>
            <span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(1)</span>
            <span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('Hibernate%e7%9a%84generator%e5%b1%9e%e6%80%a7+','6091655');return false;" title="收藏" target="_blank">收藏</a></span>
             <span class="link_report"> <a href="#report" onclick="javascript:report(6091655,2);return false;" title="举报">举报</a></span>
    
        </div>
    </div>    <style type="text/css">        
            .embody{
                padding:10px 10px 10px;
                margin:0 -20px;
                border-bottom:solid 1px #ededed;                
            }
            .embody_b{
                margin:0 ;
                padding:10px 0;
            }
            .embody .embody_t,.embody .embody_c{
                display: inline-block;
                margin-right:10px;
            }
            .embody_t{
                font-size: 12px;
                color:#999;
            }
            .embody_c{
                font-size: 12px;
            }
            .embody_c img,.embody_c em{
                display: inline-block;
                vertical-align: middle;               
            }
             .embody_c img{               
                30px;
                height:30px;
            }
            .embody_c em{
                margin: 0 20px 0 10px;
                color:#333;
                font-style: normal;
            }
    </style>
    <script type="text/javascript">
        $(function () {
            try
            {
                var lib = eval("("+$("#lib").attr("value")+")");
                var html = "";
                if (lib.err == 0) {
                    $.each(lib.data, function (i) {
                        var obj = lib.data[i];
                        //html += '<img src="' + obj.logo + '"/>' + obj.name + "&nbsp;&nbsp;";
                        html += ' <a href="' + obj.url + '" target="_blank">';
                        html += ' <img src="' + obj.logo + '">';
                        html += ' <em><b>' + obj.name + '</b></em>';
                        html += ' </a>';
                    });
                    if (html != "") {
                        setTimeout(function () {
                            $("#lib").html(html);                      
                            $("#embody").show();
                        }, 100);
                    }
                }      
            } catch (err)
            { }
            
        });
    </script>
      <div class="category clearfix">
        <div class="category_l">
           <img src="http://static.blog.csdn.net/images/category_icon.jpg">
            <span>分类:</span>
        </div>
        <div class="category_r">
                    <label onclick="GetCategoryArticles('738195','zzh87615','top','6091655');">
                        <span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">Java<em>(31)</em></span>
                      <img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">
                      <img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">
                        <div class="subItem">
                            <div class="subItem_t"><a href="http://blog.csdn.net/zzh87615/article/category/738195" target="_blank">作者同类文章</a><i class="J_close">X</i></div>
                            <ul class="subItem_l" id="top_738195">                            
                            </ul>
                        </div>
                    </label>                    
        </div>
    </div>
    
      本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。
      1. <class name="onlyfun.caterpillar.User"  
      2. table="USER">   
      3. <id name="id" type="string" unsaved-value="null">   
      4. <column name="USER_ID"/>   
      5. <generator class="uuid.hex"/>  
      6. </id>   
      7. </class>   
         

      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值一样。

      本文讲解Hibernate中hbm的generator子元素的一些内置生成器的快捷名字。Generator子元素是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。

      在*.hbm.xml必须声明的< generator>子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。

      1. <generator class="sequence"/>  

      这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate提供了很多内置的实现。下面是Generator子元素的一些内置生成器的快捷名字:

      increment(递增)

      用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

      identity

      对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的。

      sequence (序列)

      在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence),而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。

      hilo (高低位)

      使用一个高/低位算法来高效的生成long, short或者 int类型的标识符。给定一个表和字段(默认分别是是hibernate_unique_key 和next_hi)作为高位值得来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器。

      seqhilo(使用序列的高低位)

      使用一个高/低位算法来高效的生成long, short或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

      uuid.hex

      用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。

      uuid.string

      使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中

      native(本地)

      根据底层数据库的能力选择identity, sequence 或者hilo中的一个。

      assigned(程序设置)

      让应用程序在save()之前为对象分配一个标示符。

      foreign(外部引用)

      使用另外一个相关联的对象的标识符。和< one-to-one>联合一起使用。

      Generator子元素的用法:

      1. <class name="onlyfun.caterpillar.User" table="USER">  
      2. <id name="id" type="string" unsaved-value="null">  
      3. <column name="USER_ID"/>  
      4. <generator class="uuid.hex"/>  
      5. </id>  
      6. </class>  

        <div id="digg" articleid="6091655">
            <dl id="btnDigg" class="digg digg_enable" onclick="btndigga();">
               
                 <dt>顶</dt>
                <dd>4</dd>
            </dl>
           
              
            <dl id="btnBury" class="digg digg_enable" onclick="btnburya();">
              
                  <dt>踩</dt>
                <dd>0</dd>               
            </dl>
            
        </div>
     <div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank">&nbsp;</a>   </div>
    <div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank">&nbsp;</a></div>
    <script type="text/javascript">
                function btndigga() {
                    $(".tracking-ad[data-mod='popu_222'] a").click();
                }
                function btnburya() {
                    $(".tracking-ad[data-mod='popu_223'] a").click();
                }
            </script>
    
  • 相关阅读:
    TKStudio示例工程LPC1220_GPIO_LED学习
    LIve Writer图片自动水印,自动居中,自动为原始大小的设置方法.
    cmd 修改文件属性
    [原创]Java下X86机,Bytes和Int的转换
    [原创]把","号分隔的字串转化成一列的Table
    [原创]Java实现PKCS7填充的DES加密(修订版)
    利用ADODB.Stream实现 Bytes到String的指定编码的转换
    [原创]利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆(修改)
    [原创]用XMLHttp BinaryWrite,Post GB2312编码的字串
    UTF8ToBytes
  • 原文地址:https://www.cnblogs.com/duende99/p/7101663.html
Copyright © 2011-2022 走看看