V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hsddszjs
V2EX  ›  Java

大家是怎么写数据访问层的? mybatis-generator 的正确用法? jpa 的局限性?

  •  
  •   hsddszjs · 2015-11-21 15:07:44 +08:00 · 3186 次点击
    这是一个创建于 3292 天前的主题,其中的信息可能已经有所发展或是发生改变。

    弄 java 时间不长 希望大家指点一下
    目前公司(管理系统类)里也主要是做 web 的增删改查,我一直在思考如何简化,不应该这么繁琐才对。
    我所查到的无非就是:
    用 mybatis-generator 生成映射
    用 hibernate
    用 jpa
    后面两种我没有很深的了解过,只是简单的使用过,觉得理念很好,但要用好很困难
    在用 mybatis-generator 时遇到了问题,就是要支持多种类型的数据库的时候(因为公司的客户用的数据库不定,所以都要提供支持)很麻烦。
    因为我觉的 mybatis-generator 的 db first 的设计理念对象我们这样的公司就有问题,目前的流程是

    用 ermaster 生成 er 模型 --> 生成各个版本的数据库 ddl ---> 用 mybatis-generator 生成各数据库版本的 mapper.xml ( pojo 和 mapper 、 example 用同一个)
    这样就总是会有 字段类型不一致的问题,还有各种兼容性问题

    我的想法是 先建模(er 图或 entity ),用 hibernate 的能力去生成各个版本的数据库 DDL ,用 freemaker 模板去生成 mybatis mapper

    最近也正在研究代码生成器,很想要这样一个 intellij 插件或 maven 插件,写好各个 entity ,可以预览 er 图(也可以修改 er 图同步到 entity pojo),
    输入: entity 所在的包
    输出:各数据库 DDL 、 mybatis mapper example 、 spring sessionfactory 配置 code snippets 、 hibernate 配置 snippets ,甚至有 restcontroller 和 增删改查页面(有点像.net framework 的生成了)

    各位有没有好的代码生成工具?各位是怎么写数据访问层的? 欢迎讨论 快来教教我提升效率节省生命吧

    6 条回复    2015-11-22 19:31:53 +08:00
    raysmond
        1
    raysmond  
       2015-11-21 15:29:20 +08:00
    spring jpa
    hsddszjs
        2
    hsddszjs  
    OP
       2015-11-21 15:34:17 +08:00
    @raysmond 简单用过 spring-data-jpa 确实有 hibernate 的优点又有可自定义 sql 的灵活性 但是目前公司里用的还是 mybatis ;想问下 现在 spring jpa 的成熟度足够吗
    raysmond
        3
    raysmond  
       2015-11-21 16:03:13 +08:00
    @hsddszjs Spring Data JPA 非常成熟啊,不用管是数据库是传统 SQL 如 MySQL , PostgreSQL 还是 NoSQL 如 MongoDB , Cassandra 等,接口都一样,非常方便
    jc4myself
        4
    jc4myself  
       2015-11-21 19:41:19 +08:00 via iPhone
    mybatis generator 也可以加插件自扩展的
    jadetang
        5
    jadetang  
       2015-11-22 08:14:11 +08:00
    楼主可以看看我写的一个代码生成器, https://github.com/jadetang/maliang
    1 、数据库字段类型到 java 类型的字段映射可以通过配置文件自动修改的
    2 、可以支持从数据库读取表结构(目前支持 mysql 后继考虑支持 oracle ),或者直接输入表结构去生成字段。
    3 、支持自定义的模板。
    nonesuccess
        6
    nonesuccess  
       2015-11-22 19:31:53 +08:00
    我自己写过一个代码生成器,是以 java pojo 为核心的,读取 java 类信息生成 sql 和 mapper ,参考了 mybatis generator 的 mapper 设计思路, lz 有兴趣的话可以一起交流
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3229 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 13:07 · PVG 21:07 · LAX 05:07 · JFK 08:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.