当前位置: 首页 > news >正文

网站编程 mysql做网站的logo

网站编程 mysql,做网站的logo,下载百度app到手机上,福清福州网站建设Id 项目 https://gitee.com/supervol/loong-springboot-study #xff08;记得给个start#xff0c;感谢#xff09; Id 概述 在 Spring Boot 3 开发中#xff0c;数据库 Id#xff08;主键#xff09;作为实体的唯一标识#xff0c;是数据存储与关联的核心要素。其生…Id 项目 https://gitee.com/supervol/loong-springboot-study 记得给个start感谢 Id 概述 在 Spring Boot 3 开发中数据库 Id主键作为实体的唯一标识是数据存储与关联的核心要素。其生成策略直接影响系统性能、分布式一致性及数据安全性。 Id 核心 唯一标识确保每条记录在表中具有唯一身份是 CRUD 操作的基础如通过 Id 查询、更新、删除。关联基础在多表关系如一对一、一对多中作为外键关联的依据如user_id关联用户表与订单表。索引优化主键默认会被数据库创建索引合理的 Id 设计可提升查询效率。 Id 示例 请参考项目地址中 springboot-db/springboot-id 模块代码。 Id 策略 1. 数据库自增策略 1原理 依赖数据库自身的自增机制如 MySQL 的AUTO_INCREMENT、PostgreSQL 的SERIAL插入数据时数据库自动生成唯一 Id。 2适用场景 单机应用、数据量中等、无需分布式部署的场景。 3实现 通过 JPA 的GeneratedValue注解指定策略为GenerationType.IDENTITY import jakarta.persistence.*;Entity Table(name user) public class User {Id// 指定自增策略GeneratedValue(strategy GenerationType.IDENTITY)private Long id; // 主键字段private String name;// 其他字段及getter/setter }4优缺点 优点实现简单数据库自动维护性能高效索引友好。缺点分布式环境下多库写入可能导致 Id 重复无法提前获取 Id需插入后才能返回。 2. 序列策略 1原理 依赖数据库的序列Sequence机制如 Oracle、PostgreSQL 支持通过序列生成唯一 Id插入前先从序列获取值。 2适用场景 Oracle 等不支持自增主键的数据库或需要提前获取 Id 的场景。 3实现         指定策略为GenerationType.SEQUENCE并通过SequenceGenerator定义序列 Entity Table(name order) public class Order {Id// 定义序列生成器SequenceGenerator(name order_seq, // 生成器名称sequenceName order_sequence, // 数据库序列名allocationSize 1 // 每次从序列获取的步长)GeneratedValue(strategy GenerationType.SEQUENCE, generator order_seq)private Long id;// 其他字段及getter/setter }4优缺点 优点支持提前获取 Id分布式环境下可通过不同序列避免冲突。缺点依赖数据库序列特性MySQL 不原生支持需手动维护序列。 3. UUID 策略 1原理 生成全球唯一的 128 位标识符如550e8400-e29b-41d4-a716-446655440000无需依赖数据库由应用层生成。 2适用场景 分布式系统多节点写入无冲突、对 Id 无连续性要求的场景。 3 实现 方式 1JPA 自带UUIDGeneratorHibernate 内置 Id GeneratedValue(generator uuid) GenericGenerator(name uuid, strategy org.hibernate.id.UUIDGenerator) private String id; // 注意类型为String方式 2手动生成如使用java.util.UUID Entity public class Product {Idprivate String id;// 插入前手动生成UUIDPrePersistpublic void generateId() {if (id null) {id UUID.randomUUID().toString().replace(-, ); // 去除横线缩短长度}}// 其他字段及getter/setter }4优缺点 优点分布式友好无冲突无需依赖数据库可提前生成。缺点字符串类型32 位占用空间大索引效率低于数值型 Id无连续性可读性差。 4. 雪花算法 1原理 由 Twitter 提出的分布式 Id 生成算法保证全局唯一、有序递增。生成 64 位 Long 型 Id结构如下 1位符号位固定0 41位时间戳毫秒级 10位机器标识可拆分机房/节点 12位序列号同一毫秒内自增2适用场景 分布式系统如微服务、高并发场景需兼顾唯一性和有序性。 3实现         需自定义 Id 生成器可借助工具类如 Hutool或手动实现 引入 Hutool 依赖 dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.20/version /dependency自定义 Id 生成器 import cn.hutool.core.lang.Snowflake; import cn.hutool.core.net.NetUtil; import cn.hutool.core.util.IdUtil; import jakarta.persistence.Id; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IdentifierGenerator; import java.io.Serializable;// 自定义雪花算法生成器 public class SnowflakeIdGenerator implements IdentifierGenerator {private static final Snowflake SNOWFLAKE;static {// 机房ID0-31和机器ID0-31分布式部署时需保证唯一long workerId NetUtil.ipv4ToLong(NetUtil.getLocalhostStr()) % 32;long dataCenterId IdUtil.getMachineId() % 32;SNOWFLAKE IdUtil.createSnowflake(workerId, dataCenterId);}Overridepublic Serializable generate(SharedSessionContractImplementor session, Object object) {return SNOWFLAKE.nextId(); // 生成雪花Id} }在实体中使用 Entity public class Log {IdGeneratedValue(generator snowflake)GenericGenerator(name snowflake, strategy com.example.demo.SnowflakeIdGenerator)private Long id; // 雪花Id为Long类型// 其他字段及getter/setter }4优缺点 优点分布式唯一数值型 Id索引高效有序递增便于排序。缺点依赖服务器时钟时钟回拨可能导致重复需配置机器 ID分布式部署需手动保证唯一。 Id 适配 数据库支持的主流策略推荐方案MySQL自增IDENTITY优先用自增简单高效Oracle序列SEQUENCE用序列策略或雪花算法PostgreSQL自增SERIAL、序列中小规模用自增分布式用雪花SQL Server自增IDENTITY自增或 UUIDMongoDB内置 ObjectId类似 UUID直接使用 ObjectId 或雪花算法 Id 自定义 当内置策略无法满足需求如业务 Id 含特定前缀如ORDER_20231001_xxx可自定义生成器步骤如下 实现 Hibernate 的IdentifierGenerator接口重写generate方法在方法中编写自定义 Id 生成逻辑如结合日期、业务标识、随机数在实体类的GeneratedValue中指定自定义生成器。 // 自定义业务Id生成器 public class BusinessIdGenerator implements IdentifierGenerator {Overridepublic Serializable generate(SharedSessionContractImplementor session, Object object) {// 生成格式业务前缀_年月日_自增数简化示例String prefix ORDER;String date LocalDate.now().format(DateTimeFormatter.ofPattern(yyyyMMdd));long random new Random().nextLong(1000, 9999); // 4位随机数return prefix _ date _ random;} }// 实体中使用 Entity public class Order {IdGeneratedValue(generator businessId)GenericGenerator(name businessId, strategy com.example.demo.BusinessIdGenerator)private String id; // 如ORDER_20231001_1234 }Id 实践 根据场景选择策略 单机 / 中小规模优先用数据库自增简单、高效。分布式系统用雪花算法兼顾性能与唯一性或 UUID实现简单。需提前获取 Id用序列或 UUID、雪花算法。 类型选择 数值型Long/Integer索引效率高适合自增、雪花算法。字符串String适合 UUID、业务 Id注意控制长度避免索引过大。 分布式一致性 多节点部署时自增策略需分库分表中间件如 Sharding-JDBC配合生成全局唯一 Id。雪花算法需保证机器 ID 唯一可通过配置中心分配。 避免敏感信息 自增 Id 易被猜测如通过/user/1、/user/2遍历数据敏感场景建议用 UUID 或雪花算法。 Id 总结 Spring Boot 3 中数据库 Id 的设计需结合业务场景单机 / 分布式、性能需求索引效率及安全性防遍历。主流策略各有优劣核心是在唯一性、性能与实现复杂度之间找到平衡。实际开发中可通过 JPA/Hibernate 的内置策略快速实现或通过自定义生成器满足复杂业务需求。
http://www.zqtcl.cn/news/531651/

相关文章:

  • 网站开发上传视频教程济南网站建站模板
  • 深圳市城乡和建设局网站有哪些ui的设计网站
  • vs2010网站开发源码音乐网站设计怎么做
  • 长沙县政务网站网站色彩的应用
  • 成都哪家公司做网站好百度关键词搜索热度
  • 单位写材料素材网站深圳建设外贸网站
  • 做网站如何赚钱景区网站建设的意义
  • 常用网站开发语言的优缺点口碑好的网站建设哪家好
  • 昆明找工作哪个网站好企业管理咨询包括哪些
  • 网站建设需要c语言吗ui设计培训大概多少钱
  • 门户网站开发语言响应式网站 图片尺寸奇数
  • 域外网站是山东城乡建设厅网站
  • 广州网站建设公司乐云seo598学创杯营销之道模板
  • 中国十大黑科技黑帽seo技巧
  • 阿里巴巴的网站建设与维护北京发布会直播回放
  • 深圳技术支持 骏域网站建设微信官方公众号
  • dns解析失败登录不了网站推广网站平台有哪些
  • 网站建设许可证网页设计找工作
  • 想通过网站卖自己做的东西网络公司如何建网站
  • 商务网站开发实训任务书网站建设验收合格确认书
  • 手机网站百度关键词排名查询wordpress 敏感词
  • 网站分页导航常州网约车哪个平台最好
  • 上海 网站开发设计方案参考网站
  • 网站一键备案外呼电销系统
  • 淘宝客购物网站源码网站项目开发的一般流程
  • 如何更改公司网站内容网站开发需要哪些文档
  • 洛阳建设工程网站宁波led网站建设
  • 五莲网站建设报价wordpress dux 5.3
  • 怎样做当地网站推广做电商要关注哪些网站
  • 安徽鸿顺鑫城建设集团网站设计外贸英文网站