UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
优点:
能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。
用在分布式中。
缺点:
比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。
使用UUID后,URL显得冗长,不够友好。举一个小用例:在cms系统开发文章模块的时候,我一个页面有2个表单。
<form class="avatar-form" action="uploadImage" enctype="multipart/form-data" method="post" accept="image/*">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title" id="avatar-modal-label">更改文章封面</h4>
</div>
<div class="avatar-upload">
<input type="hidden" class="avatar-src" name="avatar_src">
<input type="hidden" class="avatar-data" name="avatar_data">
<label for="avatarInput" class="btn btn-primary" style="width:100px;">选择图片</label>
<input type="file" class="avatar-input" id="avatarInput" name="avatar_file" style="display: none;" accept="image/*">
</div>
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-block avatar-save">提交</button>
</div>
</div>
</div>
</div>
.......
</form>
<sf:form method="post" modelAttribute="articleVo" class="form form-horizontal" id="form-article-add">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>文章标题:</label>
<div class="formControls col-xs-8 col-sm-9">
<sf:input path="title" class="input-text" placeholder="请输入文章标题"/>
</div>
</div>
......
</sf:form>
可能出现一种情况,就是在附件管理和图片管理的时候,比如我先上传图片或者某一个附件给某篇我还没有建立的文章。这个时候,我就不知道文章的唯一标识id。我也不好传递一个图片或者附件id给文章,因为同处于一个页面,这个时候使用UUID,效果最好,我在图片或者附件管理 的serveice层编写一个生成UUID的方法,当我上传图片或者附件的时候,就会自动生成一个UUID,这个时候我把这个UUID用隐藏域传递给另一个添加文章表单。如上代码所示,这样就可以更好的控制整个cms的逻辑。也可以更好的操作文章。
一个页面可以存在多个表单,但是表单之间不能嵌套,嵌套的话,当你传参时,就会出错。