之前一直使用 thinkphp,没有 Entity 这回事,最近研究了 spring-boot,发现 Entity 的把字段映射定义成驼峰法通过注解来对应具体的下划线字段名称: 1、这样是否会有性能损失,要不要直接数据库字段改成驼峰法? 2、之前的系统是 php 的,想直接把后端改成 java,但是兼容原来的数据库,php 版本的后端返回比如文章信息时是直接 json(字段下划线法),那 java-jpa 有办法再输出 json 时再把驼峰法转换成下划线吗?还是直接方案 1,直接统一全局驼峰法?
1
janwarlen 2020-03-05 19:34:40 +08:00
数据库不要用驼峰,驼峰一般只是针对代码的规约
用,两者都可以用,个人从可读性是数据库使用下划线 |
2
hantsy 2020-03-05 19:42:19 +08:00 2
一般都是用 Snake 比较多。Camel 方式会很多问题,特别一些系统处理不分大小写,有的语言或者框架已经加入大小写检测。
SQL 关键字大写:SELECT * FROM posts, 函数小写:SELECT now() 数据库一些命名我倾向于小写,posts(表名复数化),first_name, product_id (某表字段名)。当然 Oracle 用户好像一直喜欢全部用大写的。 |
3
mesbbs 2020-03-05 22:15:36 +08:00
表名下划线,字段名全大写
|
4
Kontinue 2020-03-05 22:18:43 +08:00
都支持的,输出 json 时再把驼峰法转换成下划线,这个可以用 fastjson 配置注解。一般来说,java 多用 mysql 吧,mysql 里数据库字段是下划线的,JPA 自动能映射成驼峰的。
|
5
saulshao 2020-03-05 22:30:05 +08:00
我一般都用下划线。
|
7
lc7029 2020-03-06 02:55:50 +08:00
汉字数据库名,汉字表明
没见有问题,而且更直观 |
8
lookas2001 2020-03-06 04:15:02 +08:00
数据库 snake,后端 camel,接口 snake,前端 camel,多麻烦。
我的话直接全部 camel,省心省事。 |
9
sutra 2020-03-06 07:33:38 +08:00
用下划线还是用驼峰,是编码规约决定的。
数据库一般都是用下划线。 |
10
chendy 2020-03-06 08:15:37 +08:00
数据库用 snake,用 camel 可能会遇到一些大小写不敏感导致的问题
至于代码 camel,数据 snake 的情况,一般都有单独的配置(比如 jackson 和 jpa 的 namingstrategy )做全局改名不需要挨个配置 |
11
murmur 2020-03-06 08:55:12 +08:00
对于行业软件其实中文命名真的是最省心的
|
12
NoKey 2020-03-06 09:18:57 +08:00
数据库里不用驼峰,用下划线,代码里用驼峰,各框架基本也是这个规约
|
13
csulyb 2020-03-06 09:28:35 +08:00
建议下划线,曾经 mysql 迁移到 pg,大小写出了一堆 bug 因为 SQL 语句是不分大小写的 但是 pg 里对大小写是敏感的 很多代码要改
|
14
passerbytiny 2020-03-06 09:33:28 +08:00
1、没有性能损失,不管哪种 Java 服务器,都是要先启动容器才能 提供服务的,而容器是会缓存各种配置的。
2、如果你们的数据库够理想,那么 jpa 那里啥也不用动,你要动的是 spring mvc 那里——配置一下 json 解析。但是,你们以前都没 Entity 这回事,那么 jpa 跟数据库的映射,八成很难做。这种情况的最佳建议是:后端完全重做,数据库重做并迁移数据,前端调整 json 规范。说句实在话,只是后端部分 PHP 换 Java,九成九都是坑。假如 PHP 三周就能做完的项目,这三周的时间就够 Java 配置一下开发环境。 |
15
oneisall8955 2020-03-06 09:39:54 +08:00 via Android
springboot 的 json 默认库应该是 Jackson,前端返回 json 的 key 可以配置为 snake 风格。只需要在返回前端的 VO 类配置对应策略。搜索一下吧
|
16
xnode 2020-03-06 09:56:48 +08:00
我都用下划线
|
17
hbolive 2020-03-06 09:59:49 +08:00
如果实在纠结,用中文吧。。
|
18
hambut 2020-03-06 10:01:26 +08:00
推荐全部使用下划线。兼容性更好
实际项目中遇到过 mac 访问 mysql 一个返回表名大小写不匹配的问题 information_schema.tables in name,当 name 长度为 1 时,返回小写,大于 1 时,返回大写。 我当时是蒙蔽的 |
19
aydd2004 2020-03-06 10:13:06 +08:00
所有代码 不管啥语言 都特么下划线
|
20
rogerus 2020-03-06 10:17:06 +08:00
数据库用下划线好一些,否则大小写问题逼疯你。
|
21
optional 2020-03-06 10:21:06 +08:00
pg 大小写不敏感,所以我选择不给自己找麻烦。
|
22
lcf0030 2020-03-06 10:26:49 +08:00
_
|
24
SheepM 2020-03-06 10:28:59 +08:00
并不建议用驼峰式,因为 oracle 数据库和 mysql 数据库有一些大小写方面的差异,mysql 大小写敏感,但 oracle 的命名统一都是大写,有一天如果需要将 mysql 数据上的表和存储过程切换到 oracle,用驼峰式会直接原地爆炸。驼峰式一般用于在代码中,但不适用于关系型数据库代码
|
25
edk24 2020-03-06 11:50:11 +08:00
推荐用中文字段 啊哈哈哈哈
|
26
hantsy 2020-03-06 14:25:26 +08:00
@csulyb 我以前一次经历,MySQL 在 Windows 下默认大小不敏感(可以修改配置),到部署到 Linux 就有问题了(字段,表名大小敏感),很多人程序里面 SQL 根本没在乎大小写。现在新版本怎么处理的,就不知道了。
有时写一些 POC,省事一点我有时也不在乎这些规则,数据库可能也和程序一样用 Camel。最近用了下 PostgreSQL (跑在 Docker 里面), 用 Helidon DBClient 访问结果是,如果用 CamelCase 的话,DbRow 读出来的字段全部变成小写。 |
27
yinzhili 2020-03-06 14:28:19 +08:00
数据库表名、视图名、存储过程名、函数名、字段名都建议用下划线法
|
29
jzmws 2020-03-06 16:14:28 +08:00
推荐用下划线, 因为数据库可以设置不区分大小写 , 我就吃过这个亏 , 之前一个不区分大小写的,然后再 java 用小写,生产数据库是大写,区分大小写 ,然后我就 gg 了
|
30
lucifer1108 2020-03-06 16:16:36 +08:00
@mesbbs 那还有可读性?
|
31
Vegetable 2020-03-06 16:20:55 +08:00
我这种数据库字段用中文名的是少数吗?如果我认真对待一个项目,数据库字段名一定是中文。
|
32
jin7 2020-03-06 16:31:01 +08:00
中文最省事了 不费脑子 不存在大小写问题
|
34
jingege 2020-03-06 16:45:13 +08:00
必须下划线呀,很多时候 MySQL 并不区分大小写吧
|
35
qile1 2020-03-07 00:03:27 +08:00 via Android
@yinzhili 最近听说 oracle 的包执行的时候要把.换成_,比如执行 packs.fac ()要写成 packs_fac ()
|
37
ZoR 2020-03-07 16:11:31 +08:00
推荐下划线,以后遇到换数据库 大小写敏感 兼容性问题 就等着哭吧
|
38
james122333 2020-03-08 15:48:47 +08:00
能的话我几乎所有东西都不想要驼峰 很容易误打的方式
|
39
james122333 2020-03-08 15:57:42 +08:00
还有都大写也是很奇葩的
对于大小和小写当然是小写看起来比较不吃力 也比较美观 |