refactor(model): 重构模型类包结构并优化序列化处理

重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。

- 将模型类按功能模块划分到ds子包中
- 为VO类添加序列化支持
- 移除冗余的serialVersionUID字段
- 修复UITools空值处理问题
- 更新项目版本号
This commit is contained in:
2025-10-09 18:27:48 +08:00
parent 51b8c16798
commit c4eec0a9dd
457 changed files with 8426 additions and 3669 deletions

View File

@@ -0,0 +1,69 @@
# 实体类规则
## 1. 目录结构
- 实体类统一放置在 `common/src/main/java/com/ecep/contract/model/` 目录下
- 按业务领域组织,不使用子目录
## 2. 命名规范
- 类名:使用驼峰命名法,首字母大写,如 `Contract.java``Company.java`
- 表名:通常与类名对应,使用大写字母和下划线,如 `CONTRACT``COMPANY`
- 字段名:使用小写字母和驼峰命名法,对应数据库中使用大写字母和下划线的列名
## 3. 继承与接口实现
- 实体类通常实现以下接口:
- `IdentityEntity`提供主键ID的getter/setter及equals方法实现
- `BasedEntity`提供toPrettyString()方法
- `NamedEntity`提供name属性的getter/setter适用于有名称的实体
- `Voable<T>`提供toVo()方法用于将实体转换为对应的VO对象
- 特定领域接口:如 `CompanyBasedEntity``ContractBasedEntity``ProjectBasedEntity`
## 4. 注解规范
- **JPA注解**
- `@Entity`:标记为实体类
- `@Table(name = "表名", schema = "数据库名")`:指定对应的数据库表和数据库
- `@Id`:标记主键字段
- `@GeneratedValue(strategy = GenerationType.IDENTITY)`:指定主键生成策略
- `@Column(name = "列名", nullable = false, length = 长度)`:指定字段对应的数据库列属性
- `@ManyToOne(fetch = FetchType.LAZY)`指定多对一关系通常使用LAZY加载
- `@JoinColumn(name = "外键列名")`:指定外键列
- `@Enumerated(EnumType.ORDINAL)`:指定枚举类型的存储方式
- `@Lob`:指定大对象类型
- `@Version`:指定乐观锁版本字段
- **Lombok注解**
- `@Getter`生成getter方法
- `@Setter`生成setter方法
- `@ToString`生成toString方法复杂关联对象可使用`@ToString.Exclude`排除
## 5. 字段规范
- 主键字段:
- 类型:`Integer`
- 命名:`id`
- 注解:`@Id``@GeneratedValue(strategy = GenerationType.IDENTITY)`
- 其他字段:
- 基本类型使用Java包装类型`Integer``Boolean`)而不是原始类型
- 时间类型:使用`java.time.LocalDate``java.time.LocalDateTime`
- 布尔类型:使用`boolean``Boolean`,对应数据库中的`BIT``BOOLEAN`类型
- 关联关系:使用`@ManyToOne``@OneToMany`等注解定义
## 6. 方法规范
- `equals`方法:通常使用`HibernateProxyUtils`工具类处理代理对象的比较
- `hashCode`方法:通常使用`HibernateProxyUtils.hashCode(this)`实现
- `toVo`方法:实现`Voable`接口将实体转换为对应的VO对象
- `toString`方法通常使用Lombok的`@ToString`注解生成
## 7. 注释规范
- 类注释使用JavaDoc格式描述实体类的用途
- 字段注释使用JavaDoc格式描述字段的含义、数据来源、取值范围等
- 对于特殊字段,可包含详细的说明表格或示例
## 8. 序列化规范
- **重要**:实体类**不包含**`Serializable`接口和`serialVersionUID`字段
- 序列化相关功能由对应的VO类实现
## 9. 最佳实践
- 实体类应保持简洁,只包含数据和基本的数据访问方法
- 业务逻辑应在服务层实现
- 复杂的查询逻辑应在Repository层或通过Specification实现
- 避免在实体类中使用复杂的计算逻辑
- 对于多对多关系,建议使用中间表和两个一对多关系实现
- 关联关系应使用懒加载LAZY以提高性能