jry
V2EX  ›  Java

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

  •  
  •   jry · Mar 5, 2020 · 14922 views
    This topic created in 2439 days ago, the information mentioned may be changed or developed.

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

    39 replies  •  2020-03-08 15:57:42 +08:00
    vvvVictoria
    vvvVictoria
    Mar 5, 2020
    1
    数据库不要用驼峰,驼峰一般只是针对代码的规约

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

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

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

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

    我当时是蒙蔽的
    aydd2004
    aydd2004
    Mar 6, 2020
    19
    所有代码 不管啥语言 都特么下划线
    rogerus
    rogerus
    Mar 6, 2020
    20
    数据库用下划线好一些,否则大小写问题逼疯你。
    optional
    optional
    Mar 6, 2020
    21
    pg 大小写不敏感,所以我选择不给自己找麻烦。
    lcf0030
    lcf0030
    Mar 6, 2020
    22
    _
    ccl945
    ccl945
    Mar 6, 2020
    23
    @lc7029 原来那个表字段用中文的是你
    SheepM
    SheepM
    Mar 6, 2020
    24
    并不建议用驼峰式,因为 oracle 数据库和 mysql 数据库有一些大小写方面的差异,mysql 大小写敏感,但 oracle 的命名统一都是大写,有一天如果需要将 mysql 数据上的表和存储过程切换到 oracle,用驼峰式会直接原地爆炸。驼峰式一般用于在代码中,但不适用于关系型数据库代码
    edk24
    edk24
    Mar 6, 2020
    25
    推荐用中文字段 啊哈哈哈哈
    hantsy
    hantsy
    Mar 6, 2020
    26
    @csulyb 我以前一次经历,MySQL 在 Windows 下默认大小不敏感(可以修改配置),到部署到 Linux 就有问题了(字段,表名大小敏感),很多人程序里面 SQL 根本没在乎大小写。现在新版本怎么处理的,就不知道了。

    有时写一些 POC,省事一点我有时也不在乎这些规则,数据库可能也和程序一样用 Camel。最近用了下 PostgreSQL (跑在 Docker 里面), 用 Helidon DBClient 访问结果是,如果用 CamelCase 的话,DbRow 读出来的字段全部变成小写。
    yinzhili
    yinzhili
    Mar 6, 2020
    27
    数据库表名、视图名、存储过程名、函数名、字段名都建议用下划线法
    wozhizui
    wozhizui
    Mar 6, 2020
    28
    @hantsy 行家啊,学习了。
    jzmws
    jzmws
    Mar 6, 2020
    29
    推荐用下划线, 因为数据库可以设置不区分大小写 , 我就吃过这个亏 , 之前一个不区分大小写的,然后再 java 用小写,生产数据库是大写,区分大小写 ,然后我就 gg 了
    lucifer1108
    lucifer1108
    Mar 6, 2020
    30
    @mesbbs 那还有可读性?
    Vegetable
    Vegetable
    Mar 6, 2020
    31
    我这种数据库字段用中文名的是少数吗?如果我认真对待一个项目,数据库字段名一定是中文。
    jin7
    jin7
    Mar 6, 2020
    32
    中文最省事了 不费脑子 不存在大小写问题
    jry
    jry
    OP
    Mar 6, 2020 via iPhone
    33
    @aydd2004 ENTITY 没法下划线
    jingege
    jingege
    Mar 6, 2020
    34
    必须下划线呀,很多时候 MySQL 并不区分大小写吧
    qile1
    qile1
    Mar 7, 2020 via Android
    35
    @yinzhili 最近听说 oracle 的包执行的时候要把.换成_,比如执行 packs.fac ()要写成 packs_fac ()
    yinzhili
    yinzhili
    Mar 7, 2020
    36
    @qile1 新的版本改了吗? 11g 还是用.来分割
    ZoR
    ZoR
    Mar 7, 2020
    37
    推荐下划线,以后遇到换数据库 大小写敏感 兼容性问题 就等着哭吧
    james122333
    james122333
    Mar 8, 2020
    38
    能的话我几乎所有东西都不想要驼峰 很容易误打的方式
    james122333
    james122333
    Mar 8, 2020
    39
    还有都大写也是很奇葩的
    对于大小和小写当然是小写看起来比较不吃力 也比较美观
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2825 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 149ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    ♥ Do have faith in what you're doing.