How do I write an adapter to support a database that is not yet supported?
You need to implement a custom DbAdapter. Most likely you won't have to do it from scratch and can extend a JdbcAdapter or one of the existing db-specific adapters.
If the adapter is for a database that we currently do not support and you are planning to donate it to Cayenne, you can do this first:
- Open a JIRA issue where all contributed code will go.
- Subscribe to the developer mailing list and introduce yourself to Cayenne developers.
Implementation procedure is roughly the following:
- Create a barebone adapter that inherits from JdbcAdapter.
|It is a good idea to put all new adapter code in its own Java package, e.g. org.apache.cayenne.dba.mydb, as default resource loading depends on that.|
- Copy types.xml file from org.apache.cayenne.dba package and edit it to map standard JDBC types to the target database native types.
|Correct mapping is needed for the Modeler to do schema generation. Technically it is not required for the runtime. However types.xml should still be there.|
- Run existing Cayenne unit tests with the new adapter, analyze the failures and change adapter code accordingly.
- Repeat the last step until all tests pass.
- Report success in JIRA and the dev list - one of the committers will integrate your code to Cayenne.