We have been using some the jOOQ generator for a while to generate some 
sources for use as the underlying "implementation" of data entities for 
interacting with a database:

base/target/generated-sources/jooq/com.example.db1.generated/{enums,routines}/*.java
base/target/generated-sources/jooq/com.example.db1.generated/{tables/udt}/{interfaces,pojos,records}/*.java

base/target/generated-sources/jooq/com.example.db2.generated/{enums,routines}/*.java
base/target/generated-sources/jooq/com.example.db2.generated/{tables/udt}/{interfaces,pojos,records}/*.java

And then in the actual source of our project:
base/src/main/java/com.example.db1.entities/*.java
base/src/main/java/com.example.db2.entities//*.java

The entities usually inherit from a table interface generated by jOOQ and 
take advantage of that to allow us to use jOOQ to execute type safe 
statements.

Our problem is with the generation and maintenance of these jOOQ classes.  
Ideally, we'd like to avoid requiring each developer to have to connect to 
these databases during build if they aren't touching the schema itself.  

We have been trying to use the XMLDatabase generator to let a developer 
pull down the project, and run a compile which would use the jOOQ generator 
to generate the source files from a committed copy of the schema in an 
XMLDatabase.  If the developer were making changes to the schema, then they 
would run a maven profile to generate a new XMLDatabase schema and commit 
that change.

There continue to be a few pieces missing in that solution that prevents it 
from fully working:
* lack of support for array types 
( https://github.com/jOOQ/jOOQ/issues/6653 )
* Postgres enums don't seem to be generated into the XMLDatabase ( no issue 
yet, didn't see anything similar in searches )
* jOOQ version changes seem to break parsing of the XMLDatabase 
( https://github.com/jOOQ/jOOQ/issues/7218 and maybe related to the fix 
in https://github.com/jOOQ/jOOQ/issues/6727 ? )
* UDTs seem to lose type information when generated from an XMLDatabase 
instead of directly from a Postgres DB ( needs further investigation on our 
end )


So, for now, we are doing something much less enjoyable which is for a 
developer with the ability to connect to both databases to run the 
generator and actually commit the generated sources in the 
target/generated-sources directory.
This isn't great because normally the target folder is excluded in 
.gitignore.


So now, my list of questions for ideas and "best practices":

* Do people normally generate source files to target/generated-sources or 
to their actual source tree?
* Do they commit the resulting generated source files in VCS?
* Are all developers typically expected to generate new sources on each 
build, even if they are potentially working with large databases that can 
be very slow to generate over a remote connection?
* Is the XMLDatabase mechanism intended to be used as a solution to this 
type of scenario or are we "abusing" it?


I welcome your feedback, thank you!

-Daniel

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to