编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

数据库设计规范——4. ORM 映射

wxchong 2024-06-23 19:10:25 开源技术 42 ℃ 0 评论

强制要求

1. 在表查询中,?律不要使? * 作为查询的字段列表,需要哪些字段必须明确写明。

说明:

  • 增加查询分析器解析成本;
  • 增减字段容易与 resultMap 配置不?致。

2. POJO 类的布尔属性不能加 is,?数据库字段必须加 is_,要求在 resultMap 中进?字段与属性之间的映射。

3. 不要? resultClass 当返回参数,即使所有类属性名与数据库字段??对应,也需要定义;反过来,每?个表也必然有?个与之对应。

说明: 配置映射关系,使字段与 DO 类解耦,?便维护。

4. sql.xml 配置参数使? #{}, #param# 不要使? ${} 此种?式容易出现 SQL 注?。

5. iBATIS ?带的 queryForList(String statementName,int start,int size) 不推荐使?。

说明:其实现?式是在数据库取到 statementName 对应的SQL语句的所有记录,再通

过 subList 取 start,size 的?集合。

正例:

Map<String, Object> map = new HashMap<String, Object>();

map.put("start",start);

map.put("size", size);

6. 不允许直接拿 HashMap 与 Hashtable 作为查询结果的输出。

说明: resultClass=“Hashtable”, 会置?字段名和属性值,但是值的类型不可控。

7. 更新数据表记录时,必须同时更新记录对应的 update_time 字段值为当前时间。

推荐规约

不要写?个??全的数据更新接?。传?为 POJO 类,不管是不是??的?标更新字段,都进?更新:

update table set c1=value1,c2=value2,c3=value3;

这是不对的。执? SQL 时,不要更新?改动的字段,?是易出错; ?是效率低;三是增加 binlog存储。

规约参考

@Transactional 事务不要滥?。事务会影响数据库的 QPS,另外使?事务的地?需要考虑各??的回滚?案,包括缓存回滚、搜索引擎回滚、消息补偿、统计修正等。

其它基础规范

  • 表存储引擎必须使?InnoDB
  • 表字符集默认使?utf8,必要时候使?utf8mb4

解读:

a. 通?,?乱码?险,汉字3字节,英?1字节

b. utf8mb4是utf8的超集,有存储4字节

  • 禁?使?存储过程,视图,触发器,Event

解读:

a. 对数据库性能影响较?,互联?业务,能让站点层和服务层?的事情,不要交到数据库层

b. 调试,排错,迁移都?较困难,扩展性较差

  • 禁?在数据库中存储??件,例如照?,可以将??件存储在对象存储系统,数据库中存储路径
  • 禁?在线上环境做数据库压?测试
  • 测试、开发、线上数据库环境必须隔离

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表