Well technically I define an SPI as anything Hibernate consumes to
perform a function on its behalf. Essentially anything that users,
frameworks, app servers, etc "plug in" to Hibernate to tell it how to
handle certain things. The contract for that would be an SPI.
Notice this covers Type/Use
I've started the work to split classes between API, SPI and private classes.
Some areas went very well, some are more problematic but that was to be
expected. Anyways it did generate a couple of questions from philosophical to
concrete. Please try and chime in.
1.
API vs SPI:
http://opensource.