On 21/12/21 4:11am, Andrus Adamchik wrote:
Is it worth examining DBeaver to see whether Cayenne functionality could be 
added on top of the existing ERD 
features?https://dbeaver.com/docs/wiki/ER-Diagrams
While I use DBeaver almost daily and appreciate all the work that went into it 
and shared at no cost, the UI is horrible (esp on the Mac). The Eclipse-style 
widgets, bad responsiveness and modality everywhere are driving me crazy. E.g. 
you reopen DBeaver with 5 tabs from a previous session, that are connected to a 
DB that is no longer there, and you get exactly 5 modal error popups that you 
need to dismiss manually.


I think its important to target what people will find useful, rather than UI details which will one day be fixed. It is good to go to where the users are... and right now they are using tools like Intellij or DBeaver.

An Intellij plugin need not reproduce the entire Cayenne modeler. Even a few cgen integrations or annotation helpers could expand the visibility of Cayenne. Could Cayenne modeler be split into a set of services which could then be exposed in different front-ends?


Let me start by asking a basic question. Do we see Modeler as just a tool which parses and writes an XML file, or does it do more? What is its relationship (as a product, not technically) with cgen, mvn/gradle plugins? Could it import Hibernate annotations so that users have an easier path to try Cayenne? How should it interact with a DB?

DBeaver can already read a DB schema and output it to sql, json, etc. Would a Cayenne 'plugin' just allow it to output that schema to Cayenne XML?

What utility could we give Intellij understanding Cayenne better? Could it understand our annotations and allow users to click through to entity events from the entities themselves?


So first let's agree on what Modeler is today and what it should be in the future.




If Modeler changed to another language or UI library, could it leverage that to 
better integrate with other tooling?
I may have one such integration scenario I care about myself - integration with 
Liquibase... I no longer use a permanent local DB to run my code. My APIs and jobs are 
tested via JUnit, Testcontainers, and a Docker-based transitory DB, and I never ever 
check them manually. But I still forced to maintain a semi-permanent local DB to do 
"DB Import" for Cayenne, and this creates extra friction. Allowing 
CayenneModeler to create its own transitory schema with Docker/Testcontainers/Liquibase 
for the purpose of DB Import would be extremely cool.


Phabricator has a really nice feature. When you run a new version in production it compares the real database with the model it has, and automatically fixes the production database to look the way it should. Sure that's not possible when you need to migrate data to a new schema, but for verifying and adding indexes or simply adding or dropping columns, its quite nice.

Liquibase is great, but its only good for applying a set of rules and not for getting the database into a known state. Some integration between liquibase (transition rules) and cayenne (a known db state) would be great.



Ari

Reply via email to