I've worked as a Full Stack Java Web Developer for many years now and of all the projects I have worked on two things are true of all of them:
- They were all Multi-Tenant applications with one database/one schema architecture
- They never utilized a Rapid-Application-Development framework (J2EE and Spring only)
I can't deny that there is a lot of boiler-plate code in many of the things I do for my day-to-day tasks so I'm interested in mastering a Rapid Application Development framework that won't compromise on power and will support a multi-tenant architecture. I have to invest a great deal of energy in writing, testing and maintaining DAO classes, as well as making sure that the CRUD operations are secure enough to make sure one tenant cannot access/modify another tenant's data, so a Hibernate-style option seems like it would be a great time saver.
However, Hibernate does not support multi-tenant databases that are one db/one schema. I shudder at the idea of separate databases or schema per client. For one thing we would be remotely hosted so I imagine the costs of supporting many databases for lots of small clients, many of whom may not even be active users, would be prohibitive. Secondly, a lot of tech support goes into looking for data abnormalities in the database, and being able to query across data in a central location is an invaluable time saver.
Spring Boot seems like a good choice here, but it's based on Hibernate which does not yet allow for the use of a Discriminator approach (which would allow for a one-database/one-schema) model. Is there a viable RAD framework that works well for Multi-Tenant Enterprise development? Alternatively, is it easy/possible to implement such an architecture in an existing framework?