hibernate的应用,一定需要主键的。
很多书上或网页都推荐针对hibernate的表设计时,设计一个独立的主键id,跟业务逻辑无关系的。但是我在实际应用中,发现有些业务涉及主外时,使用跟业务逻辑有关的主键很方便。
hibernate的应用,一定需要主键的。
很多书上或网页都推荐针对hibernate的表设计时,设计一个独立的主键id,跟业务逻辑无关系的。但是我在实际应用中,发现有些业务涉及主外时,使用跟业务逻辑有关的主键很方便。
我的经验:
1、使用自增流水号 作为主键 少用复合主键
比如 a表是一个复合主键表 b参照a 那么b必须也有那两个
2、自增主键 可以优化查询
因为主键是自增的 所以比如查询时 可以带上 最后一次的id 这样查询效率会提高不少
3、复合主键 改成唯一索引 进行约束即可
4、好切分
比如我要分表 如果简单的话 可以直接根据id 取模划分 简单 而且 均匀
比如说支付宝订单表,用订单号做主键,理论上完全可以,但不推荐,不到万不得已的时候不要用(比如复合主键)。业务逻辑主键引入库表,使得底层数据库表和业务逻辑想耦合,之后业务逻辑的变动很可能对底层数据库结构产生连带影响,在某些情况下,这种变更的代价难以承受
我的经验是相反的,不要和业务挂上钩,好些。特别是hibernate这种自动化程度高的。
因为业务是会变的。比如
现在说这个表每天只可能有一条数据,于是主键用'yyyyMMdd'了。
可是例外发生了,一天可以有多条,于是主键就得改,改主键就比较麻烦。特别是如果还有外键带着,一团糟!
所以我推荐和业务脱离,如果业务要求严格。
宁可用制约(最后也程序中处理,除非该应用偏向DB。)代替,也别绑上主键等。
相关推荐
在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够更专注于业务逻辑而非底层的SQL语句。本实例通过Hibernate来创建一个登录系统,旨在帮助初学者理解如何将...
Hibernate,作为Java领域中的一个强大对象关系映射(ORM)框架,为开发者提供了便捷的数据访问层解决方案,将数据库操作与业务逻辑解耦,大大简化了Java应用的开发过程。本文将深入探讨我在实践中对Hibernate的理解...
在Java企业级开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑。本文将深入探讨如何使用Hibernate来实现一对一(OneToOne)的关联映射,这对于理解和构建复杂的...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。本示例将详细解析如何使用Hibernate来实现多对多关系。 一、Hibernate...
在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是底层的数据存取细节。本教程“使用Hibernate开发租房系统78”聚焦于利用Hibernate来构建一个...
这是一个基于SpringMVC和Hibernate框架构建的简单问答系统,适合初学者学习和借鉴。这个系统可能没有华丽的界面,但其核心在于后端逻辑的实现,对于理解如何将这两个技术结合来处理Web应用中的数据交互有很好的示例...
Hibernate是一个开源的ORM框架,它通过将Java类与数据库表进行映射,实现了对象的持久化。这使得开发者无需编写大量的SQL语句,只需关注业务逻辑,从而提高了开发效率。在Hibernate 4.2.2.Final版本中,包含了对JPA...
4. **持久化类与主键**:`@Entity`注解标记一个类为持久化类,`@Table`定义了对应的数据库表名,`@Id`注解定义主键字段,例如,通常会有一个名为id的属性被标记为主键。 5. **Session工厂与Session**:...
- **实现原理**: 在使用`identity`方式时,开发者需要在数据库表的设计中为主键字段指定自动增长属性(例如MySQL中的`AUTO_INCREMENT`)。 - **比较分析**: - **灵活性**: `native`提供更高的灵活性,因为它可以...
这里`@Entity`表示这是一个JPA实体,`@Table`指定对应的数据库表名,`@Id`定义主键,`@GeneratedValue`定义主键生成策略,`@Column`定义字段映射到表的列。 3. **Repository接口** 创建一个继承自JpaRepository的...
Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库,将Java类与数据库表进行映射,从而避免了直接编写SQL语句的繁琐工作。这个框架的核心在于将业务对象(即Java对象...
Hibernate作为一个强大的对象关系映射(ORM)框架,能够帮助开发者将数据库操作与业务逻辑进行解耦,提升开发效率并降低维护成本。 在Hibernate3.2版本中,有许多关键特性值得深入探讨。首先,它提供了更加完善的...
而"本人做的一个简单的实例"则意味着包含了一个实际运行的代码示例,帮助初学者了解如何在项目中集成并使用Hibernate。 **Hibernate框架介绍** Hibernate是一个开源的ORM框架,它的主要功能是将Java类与数据库表...
在使用Hibernate时,我们通常需要创建一个名为`hibernate.cfg.xml`的配置文件,该文件是Hibernate应用的主配置源,包含了数据库连接、方言、缓存等关键设置。以下是一份基本的`hibernate.cfg.xml`配置示例: ```xml...
Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。本教程将引导你深入理解Hibernate的核心概念和实践应用,帮助你提升开发效率。 **一、Hibernate简介** Hibernate 是...
【hibernate小程序】是一个基于Hibernate框架开发的小型应用程序,主要功能是对用户数据进行基本的CRUD(创建、读取、更新、删除)操作。Hibernate是Java领域内广泛使用的对象关系映射(ORM)框架,它允许开发者用...
Hibernate支持 Annotation 配置,使得我们可以直接在实体类上定义数据表映射,如`@Entity`表示实体类,`@Table`指定对应的数据表,`@Id`标识主键,`@GeneratedValue`管理主键生成策略等。 整合Spring和Hibernate,...
结合【标签】"hibernate struts2",我们可以看出该项目着重于使用Hibernate进行数据持久化,同时利用Struts2处理前端请求和业务逻辑,构建了一个完整的Java Web应用。在实际项目中,开发者还需要掌握HTML、CSS、...
3. **实体类(Entity):** 在 Hibernate 中,每个数据库表对应一个 Java 类,类中的字段对应表的列。使用 `@Entity` 注解标记此类为实体,`@Table` 注解指定对应的表名。 4. **主键(Primary Key):** 使用 `@Id`...
1. **独立的ID设计**:在设计数据库时,推荐为每张表创建一个与业务逻辑无关的主键ID,例如自增的序列号。这样做可以确保在数据量增长时,能够更方便地为这些ID字段添加索引,提高查询效率。同时,如果业务需求发生...