数据库字段名下划线法还是驼峰法好一些?

2020-03-05 19:25:06 +08:00
 jry

之前一直使用 thinkphp,没有 Entity 这回事,最近研究了 spring-boot,发现 Entity 的把字段映射定义成驼峰法通过注解来对应具体的下划线字段名称: 1、这样是否会有性能损失,要不要直接数据库字段改成驼峰法? 2、之前的系统是 php 的,想直接把后端改成 java,但是兼容原来的数据库,php 版本的后端返回比如文章信息时是直接 json(字段下划线法),那 java-jpa 有办法再输出 json 时再把驼峰法转换成下划线吗?还是直接方案 1,直接统一全局驼峰法?

12710 次点击
所在节点    Java
39 条回复
janwarlen
2020-03-05 19:34:40 +08:00
数据库不要用驼峰,驼峰一般只是针对代码的规约

用,两者都可以用,个人从可读性是数据库使用下划线
hantsy
2020-03-05 19:42:19 +08:00
一般都是用 Snake 比较多。Camel 方式会很多问题,特别一些系统处理不分大小写,有的语言或者框架已经加入大小写检测。

SQL 关键字大写:SELECT * FROM posts, 函数小写:SELECT now()
数据库一些命名我倾向于小写,posts(表名复数化),first_name, product_id (某表字段名)。当然 Oracle 用户好像一直喜欢全部用大写的。
mesbbs
2020-03-05 22:15:36 +08:00
表名下划线,字段名全大写
Kontinue
2020-03-05 22:18:43 +08:00
都支持的,输出 json 时再把驼峰法转换成下划线,这个可以用 fastjson 配置注解。一般来说,java 多用 mysql 吧,mysql 里数据库字段是下划线的,JPA 自动能映射成驼峰的。
saulshao
2020-03-05 22:30:05 +08:00
我一般都用下划线。
mejinke
2020-03-05 22:32:30 +08:00
我一般都用下划线。
lc7029
2020-03-06 02:55:50 +08:00
汉字数据库名,汉字表明
没见有问题,而且更直观
lookas2001
2020-03-06 04:15:02 +08:00
数据库 snake,后端 camel,接口 snake,前端 camel,多麻烦。
我的话直接全部 camel,省心省事。
sutra
2020-03-06 07:33:38 +08:00
用下划线还是用驼峰,是编码规约决定的。
数据库一般都是用下划线。
chendy
2020-03-06 08:15:37 +08:00
数据库用 snake,用 camel 可能会遇到一些大小写不敏感导致的问题
至于代码 camel,数据 snake 的情况,一般都有单独的配置(比如 jackson 和 jpa 的 namingstrategy )做全局改名不需要挨个配置
murmur
2020-03-06 08:55:12 +08:00
对于行业软件其实中文命名真的是最省心的
NoKey
2020-03-06 09:18:57 +08:00
数据库里不用驼峰,用下划线,代码里用驼峰,各框架基本也是这个规约
csulyb
2020-03-06 09:28:35 +08:00
建议下划线,曾经 mysql 迁移到 pg,大小写出了一堆 bug 因为 SQL 语句是不分大小写的 但是 pg 里对大小写是敏感的 很多代码要改
passerbytiny
2020-03-06 09:33:28 +08:00
1、没有性能损失,不管哪种 Java 服务器,都是要先启动容器才能 提供服务的,而容器是会缓存各种配置的。
2、如果你们的数据库够理想,那么 jpa 那里啥也不用动,你要动的是 spring mvc 那里——配置一下 json 解析。但是,你们以前都没 Entity 这回事,那么 jpa 跟数据库的映射,八成很难做。这种情况的最佳建议是:后端完全重做,数据库重做并迁移数据,前端调整 json 规范。说句实在话,只是后端部分 PHP 换 Java,九成九都是坑。假如 PHP 三周就能做完的项目,这三周的时间就够 Java 配置一下开发环境。
oneisall8955
2020-03-06 09:39:54 +08:00
springboot 的 json 默认库应该是 Jackson,前端返回 json 的 key 可以配置为 snake 风格。只需要在返回前端的 VO 类配置对应策略。搜索一下吧
xnode
2020-03-06 09:56:48 +08:00
我都用下划线
hbolive
2020-03-06 09:59:49 +08:00
如果实在纠结,用中文吧。。
hambut
2020-03-06 10:01:26 +08:00
推荐全部使用下划线。兼容性更好

实际项目中遇到过 mac 访问 mysql 一个返回表名大小写不匹配的问题

information_schema.tables in name,当 name 长度为 1 时,返回小写,大于 1 时,返回大写。

我当时是蒙蔽的
aydd2004
2020-03-06 10:13:06 +08:00
所有代码 不管啥语言 都特么下划线
rogerus
2020-03-06 10:17:06 +08:00
数据库用下划线好一些,否则大小写问题逼疯你。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX