1
nothingLeft 2021-02-25 10:19:44 +08:00 1
我们都是增删改查程序员,干嘛自己干掉自己!
|
2
asd999cxcx 2021-02-25 10:21:07 +08:00
自动创建表?JPA 不就是项目启动后自动创建表吗...
|
3
WEBUG OP @asd999cxcx #2 这样的项目启动后,突然有需求要加一个 a 表,这个表是新的,没有 entity 也没有增删改查的方法,通过一个网页把 a 的属性都写好,自动创建这个表,系统就多出来一个维护界面,可以操作这个表了。原来的操作是,添加一套增删改查的代码再发布。
|
4
WEBUG OP @nothingLeft #1 这么一说还有点道理,这不是想把自己从繁琐无聊的工作中解放出来吗,虽然可以自动生成代码了,还想更近一步
|
5
RedBeanIce 2021-02-25 10:31:07 +08:00
CRUD 的革命。
|
6
mhycy 2021-02-25 10:41:50 +08:00
自己造一个基于配置的表单生成模块
|
8
LostPrayers 2021-02-25 10:43:39 +08:00
代码生成器? 那些 xx 开发框架不是到处都是嘛
|
9
FreeEx 2021-02-25 10:46:04 +08:00
jpa 做不到你的需求,看你说的好像流程很简单,可以自己实现一个 orm,创建表无非就是 create table xxx,然后 crud
|
10
superrichman 2021-02-25 10:46:40 +08:00 via iPhone
phpmyadmin 🐶
|
11
WEBUG OP @superrichman #10 你这也太好用了
|
12
EscYezi 2021-02-25 10:49:05 +08:00 via iPhone
不修改代码的话重启服务修改就没了,除非有一套机制重新走一遍初始化过程。感觉搞一个 generator 自动生成 java 代码和页面更简单。
|
13
WEBUG OP @LostPrayers #8 不是生成器
|
15
echowuhao 2021-02-25 10:55:19 +08:00
postgrest 不过这个不是 jpa 了。
|
17
mhycy 2021-02-25 11:01:16 +08:00
|
18
yeqizhang 2021-02-25 11:01:30 +08:00
不就是后台 ddl 吗,肯定有这类开源工具包的。如果只是固定的数据库类型,自己写个也不难
|
20
jjianwen68 2021-02-25 11:13:10 +08:00
把 jpa 启动时,自动创建表的逻辑手工调用一遍 ?
|
21
WEBUG OP @jjianwen68 #20 jpa 启动建表的话 entity 什么的实体类应该要有吧不太清楚,现在是连 entity 都没有,新增的表在代码里没有任何存在。
|
22
huifer 2021-02-25 12:32:01 +08:00
前端页面不一定是单表 CRUD,每个输入框的验证逻辑等如何输入
|
23
chainsR 2021-02-25 12:57:17 +08:00 via Android
人人开源?
|
24
huifer 2021-02-25 13:34:30 +08:00
@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 层面代码. |
25
linbingcheng 2021-02-25 13:56:39 +08:00
jpa 我最近感觉不大好用,还不如 mybatis 呢
|
26
oneisall8955 2021-02-25 14:21:01 +08:00
老铁想说的是 jpa 的 lowcode 框架?
|
27
dfzj 2021-02-25 15:05:10 +08:00 1
老铁,增删改查还是用无远吧:www.wuyuan.io
|
28
guagusi 2021-02-25 15:11:17 +08:00
基于元数据设计数据模型
|
29
WEBUG OP @oneisall8955 #26 就是这意思,java 就行,如果 jpa 真实现不了
|
30
clf 2021-02-25 15:42:42 +08:00
这玩意很多……只是通过 JPA CRUD 就行了,没必要通过 JPA 建表。
可以考虑 sql 语句建表后根据数据库自动生成这个表的 CRUD 和实体类,这样可能会更好处理一点。 |
31
LarryWang 2021-02-25 17:34:24 +08:00
用 excel 吧
|
32
zypy333 2021-02-25 17:59:07 +08:00
我这有个类似的实现,就是有若干系统模块,功能类似,字段不多,也没有什么复杂查询,单独建表开发感觉很繁琐,又有些公共属性,最后统一用了一张表来存储实际数据,多加了些通用字段,另外一张表记录模块配置,表里用 json 记录下不同的模块下通用字段的实际展示名称,实际表单类型,是否必须等等,最后展示的时候用的同一个界面做的增删改查.
|
33
lostpupil 2021-02-25 18:03:35 +08:00
原理上就是 调用 create_table
然后 crud 找个 随便什么框架就行,graphql 也可以,不过有的可能需要重启 reload 。 不过这个其实你用 doc database 就很方便。 mongodb 什么的。 |
34
shade 2021-02-25 21:34:54 +08:00
父子关系表如何处理呢?
|
35
ErrorMan 2021-02-25 23:10:45 +08:00
反向操作是可以的,每次增加一个新的 entity,然后启动程序让 jpa 自己根据 entity 创建或更新表结构,前端 API 可以用 REST Repository 配合 REST api 直接提供给前端,然后前端根据 spring HATEOAS 路径去获得完整数据结构路径提供相关操作。大概的缺陷就是不好加鉴权吧,鉴权就得介入代码了
|
36
xuanbg 2021-02-26 08:37:02 +08:00 1
尽管我很反对 GraphQL,但这种需求,就是 GraphQL 的菜。
|
37
ZiLong 2021-02-26 10:32:55 +08:00
你是不是想要 jhipster 或者
jeecg-boot 这种? |
39
hantsy 2021-02-26 12:01:32 +08:00
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 之类的维护脚本更稳妥一些。 |
40
bthulu 2021-02-26 13:16:05 +08:00
动态生成 entity 和 dao 层的.java 文件, 并自动提交到 git 仓库, 触发构建部署就行了
|
41
liian2019 2021-03-03 18:28:11 +08:00
1. 获取数据库表结构,做成配置保存
2. 从配置表读取配置,利用 javassist/asm 生成 pojo,mapper 等等类的 class 加载到虚拟机 |