维护一个 spring 项目 用的 jpa,好多繁琐的表维护界面,经常有新需求,无非就是加一个新表增删改查。代码很重复,有没有什么技术实现线上自动创建表,直接实现增删改查的方法。
|
1
我们都是增删改查程序员,干嘛自己干掉自己!
|
|
asd999cxcxFeb 25, 2021
2
自动创建表?JPA 不就是项目启动后自动创建表吗...
|
|
3
@asd999cxcx #2 这样的项目启动后,突然有需求要加一个 a 表,这个表是新的,没有 entity 也没有增删改查的方法,通过一个网页把 a 的属性都写好,自动创建这个表,系统就多出来一个维护界面,可以操作这个表了。原来的操作是,添加一套增删改查的代码再发布。
|
|
4
@nothingLeft #1 这么一说还有点道理,这不是想把自己从繁琐无聊的工作中解放出来吗,虽然可以自动生成代码了,还想更近一步
|
|
RedBeanIceFeb 25, 2021
5
CRUD 的革命。
|
|
mhycyFeb 25, 2021
6
自己造一个基于配置的表单生成模块
|
|
LostPrayersFeb 25, 2021
8
代码生成器? 那些 xx 开发框架不是到处都是嘛
|
|
dushixiangFeb 25, 2021
9
jpa 做不到你的需求,看你说的好像流程很简单,可以自己实现一个 orm,创建表无非就是 create table xxx,然后 crud
|
|
superrichmanFeb 25, 2021 via iPhone
10
phpmyadmin 🐶
|
|
11
@superrichman #10 你这也太好用了
|
|
EscYeziFeb 25, 2021 via iPhone
12
不修改代码的话重启服务修改就没了,除非有一套机制重新走一遍初始化过程。感觉搞一个 generator 自动生成 java 代码和页面更简单。
|
|
13
@LostPrayers #8 不是生成器
|
|
echowuhaoFeb 25, 2021
15
postgrest 不过这个不是 jpa 了。
|
|
yungo8Feb 25, 2021
18
不就是后台 ddl 吗,肯定有这类开源工具包的。如果只是固定的数据库类型,自己写个也不难
|
|
jjianwen68Feb 25, 2021
20
把 jpa 启动时,自动创建表的逻辑手工调用一遍 ?
|
|
21
@jjianwen68 #20 jpa 启动建表的话 entity 什么的实体类应该要有吧不太清楚,现在是连 entity 都没有,新增的表在代码里没有任何存在。
|
|
huiferFeb 25, 2021
22
前端页面不一定是单表 CRUD,每个输入框的验证逻辑等如何输入
|
|
chainsRFeb 25, 2021 via Android
23
人人开源?
|
|
huiferFeb 25, 2021
24
@Autowired
private OauthClientService oauthClientService; @Autowired private EntityManager entityManager; @Test public void testSession() { Query query = entityManager.createNativeQuery("SELECT id from oauth_client"); DetachedCriteria criteria = DetachedCriteria.forClass(Object.class) // 这里需要类型绑定,通过数据库类型和 JAVA 类型进行转换 .add(Property.forName("id") .eq(5L)); String s = criteria.toString(); EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory(); SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class); Session session = sessionFactory.openSession(); Criteria executableCriteria = criteria.getExecutableCriteria(session); List list = executableCriteria.list(); } @WEBUG JPA 层面代码. |
|
linbingchengFeb 25, 2021
25
jpa 我最近感觉不大好用,还不如 mybatis 呢
|
|
itechifyFeb 25, 2021
26
老铁想说的是 jpa 的 lowcode 框架?
|
|
27
老铁,增删改查还是用无远吧:www.wuyuan.io
|
|
guagusiFeb 25, 2021
28
基于元数据设计数据模型
|
|
29
@oneisall8955 #26 就是这意思,java 就行,如果 jpa 真实现不了
|
|
clfFeb 25, 2021
30
这玩意很多……只是通过 JPA CRUD 就行了,没必要通过 JPA 建表。
可以考虑 sql 语句建表后根据数据库自动生成这个表的 CRUD 和实体类,这样可能会更好处理一点。 |
|
LarryWangFeb 25, 2021
31
用 excel 吧
|
|
zypy333Feb 25, 2021
32
我这有个类似的实现,就是有若干系统模块,功能类似,字段不多,也没有什么复杂查询,单独建表开发感觉很繁琐,又有些公共属性,最后统一用了一张表来存储实际数据,多加了些通用字段,另外一张表记录模块配置,表里用 json 记录下不同的模块下通用字段的实际展示名称,实际表单类型,是否必须等等,最后展示的时候用的同一个界面做的增删改查.
|
|
lostpupilFeb 25, 2021
33
原理上就是 调用 create_table
然后 crud 找个 随便什么框架就行,graphql 也可以,不过有的可能需要重启 reload 。 不过这个其实你用 doc database 就很方便。 mongodb 什么的。 |
|
shadeFeb 25, 2021
34
父子关系表如何处理呢?
|
|
ErrorManFeb 25, 2021
35
反向操作是可以的,每次增加一个新的 entity,然后启动程序让 jpa 自己根据 entity 创建或更新表结构,前端 API 可以用 REST Repository 配合 REST api 直接提供给前端,然后前端根据 spring HATEOAS 路径去获得完整数据结构路径提供相关操作。大概的缺陷就是不好加鉴权吧,鉴权就得介入代码了
|
|
36
尽管我很反对 GraphQL,但这种需求,就是 GraphQL 的菜。
|
|
ZiLongFeb 26, 2021
37
你是不是想要 jhipster 或者
jeecg-boot 这种? |
|
hantsyFeb 26, 2021
39
JPA 标准支持很多创建和维护表。https://github.com/hantsy/cargotracker/blob/master/src/main/resources/META-INF/persistence.xml#L9-L30 这个配置我写了常见的使用的几个例子。具体的参数,可以参考任何一本 JPA 书籍( Pro JPA2,Java Persistence with Hibernate ),或者规范文件,或者官方的 Jakarta EE Tutorial 。
不过一般生产环境上线都是经过优化过的脚本运行来创建表,生产环境我从来不主张用自动创建维护表。或者自己用 Flyway 之类的维护脚本更稳妥一些。 |
|
bthuluFeb 26, 2021
40
动态生成 entity 和 dao 层的.java 文件, 并自动提交到 git 仓库, 触发构建部署就行了
|
|
liian2019Mar 3, 2021
41
1. 获取数据库表结构,做成配置保存
2. 从配置表读取配置,利用 javassist/asm 生成 pojo,mapper 等等类的 class 加载到虚拟机 |