jpa 写的增删改查项目,能实现不改代码,动态添加表维护吗?

2021-02-25 10:16:06 +08:00
 WEBUG
维护一个 spring 项目 用的 jpa,好多繁琐的表维护界面,经常有新需求,无非就是加一个新表增删改查。代码很重复,有没有什么技术实现线上自动创建表,直接实现增删改查的方法。
3919 次点击
所在节点    Java
41 条回复
WEBUG
2021-02-25 11:15:56 +08:00
@jjianwen68 #20 jpa 启动建表的话 entity 什么的实体类应该要有吧不太清楚,现在是连 entity 都没有,新增的表在代码里没有任何存在。
huifer
2021-02-25 12:32:01 +08:00
前端页面不一定是单表 CRUD,每个输入框的验证逻辑等如何输入
chainsR
2021-02-25 12:57:17 +08:00
人人开源?
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 层面代码.
linbingcheng
2021-02-25 13:56:39 +08:00
jpa 我最近感觉不大好用,还不如 mybatis 呢
oneisall8955
2021-02-25 14:21:01 +08:00
老铁想说的是 jpa 的 lowcode 框架?
dfzj
2021-02-25 15:05:10 +08:00
老铁,增删改查还是用无远吧:www.wuyuan.io
guagusi
2021-02-25 15:11:17 +08:00
基于元数据设计数据模型
WEBUG
2021-02-25 15:22:01 +08:00
@oneisall8955 #26 就是这意思,java 就行,如果 jpa 真实现不了
clf
2021-02-25 15:42:42 +08:00
这玩意很多……只是通过 JPA CRUD 就行了,没必要通过 JPA 建表。

可以考虑 sql 语句建表后根据数据库自动生成这个表的 CRUD 和实体类,这样可能会更好处理一点。
LarryWang
2021-02-25 17:34:24 +08:00
用 excel 吧
zypy333
2021-02-25 17:59:07 +08:00
我这有个类似的实现,就是有若干系统模块,功能类似,字段不多,也没有什么复杂查询,单独建表开发感觉很繁琐,又有些公共属性,最后统一用了一张表来存储实际数据,多加了些通用字段,另外一张表记录模块配置,表里用 json 记录下不同的模块下通用字段的实际展示名称,实际表单类型,是否必须等等,最后展示的时候用的同一个界面做的增删改查.
lostpupil
2021-02-25 18:03:35 +08:00
原理上就是 调用 create_table
然后 crud 找个 随便什么框架就行,graphql 也可以,不过有的可能需要重启 reload 。
不过这个其实你用 doc database 就很方便。
mongodb 什么的。
shade
2021-02-25 21:34:54 +08:00
父子关系表如何处理呢?
ErrorMan
2021-02-25 23:10:45 +08:00
反向操作是可以的,每次增加一个新的 entity,然后启动程序让 jpa 自己根据 entity 创建或更新表结构,前端 API 可以用 REST Repository 配合 REST api 直接提供给前端,然后前端根据 spring HATEOAS 路径去获得完整数据结构路径提供相关操作。大概的缺陷就是不好加鉴权吧,鉴权就得介入代码了
xuanbg
2021-02-26 08:37:02 +08:00
尽管我很反对 GraphQL,但这种需求,就是 GraphQL 的菜。
ZiLong
2021-02-26 10:32:55 +08:00
你是不是想要 jhipster 或者
jeecg-boot 这种?
WEBUG
2021-02-26 10:44:32 +08:00
@xuanbg #36 有点这个感觉了,我研究研究
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 之类的维护脚本更稳妥一些。
bthulu
2021-02-26 13:16:05 +08:00
动态生成 entity 和 dao 层的.java 文件, 并自动提交到 git 仓库, 触发构建部署就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/756071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX