I'm taking on the re-architecting of a pair of applications which use Hibernate in one case, and a combination of Hibernate and a Java Content Repository (specifially JackRabbit) in the second.
A key issue in the rearchitecting is to improve performance, so I'm wondering whether there's any value in bringing in a DBA for the design and development of the application.
Note that I'm not questioning the value in having a DBA involved in managing the production databases. But in past projects, it's been essential to have a good DBA involved in the design and coding phases, working out ways to optimize the data structures, putting code into stored procedures, etc.
But given that the database structures are almost completely managed by Hibernate and JackRabbit, there's not much scope to optimize them. Sure, if we find they don't perform well a DBA could potentially identify issues and we could submit patches to improve them, but I don't know that we would want (or be able) to do much in the way of application-specific tuning.
Another reason for wondering about the role of a DBA in this type of application is that the bulk of our performance issues are most likely above the persistence layer, i.e. it's not that the database, hibernate, or JackRabbit are too slow, it's that the way we have structured our data and push it around is not very good. Fixing this will involve data modeling, but the implementation medium is XML files and Java code rather than database tables and SQL. Does a DBA typically know much about this type of thing?
The thing that keeps me from completely dismissing the need for a DBA in the design and development of an application built on top of a persistence layer is skepticism. I don't quite believe that the need for database optimization for a specific application is complely waved away by using a pre-packaged solution.
Am I missing key points? Can a skilled DBA tweak hibernate configuration files to make things blazingly fast for my app's specific use cases? Is it madness to consider running a high load Hibernate app without having a DBA manually tune the DB itself, building indices, etc.? Or is there a new creature in the development landscape who specializes in optimizing XML-based data models and abstracted persistence layers?
Thanks in advance for thoughts and suggestions!