On Apr 2, 2012, at 11:16 AM, Emmanuel Bernard wrote:

> What's your definition of an SPI, in the team we have slightly different ones.
> 
> In Hibernate search an SPI is targeted at frameworks or hyper advanced user 
> who are willing to integrate or enhance Hibernate Search. Otherwise, they are 
> considered APIs - which includes interfaces you might need to implement like 
> FieldBridge. Hibernate ORM has a different semantic where an API is what the 
> application directly code on.

The HV interpretation of SPI is the same view as in ORM. Imo It makes for a 
simpler, easier to understand cut between API and SPI. 

> For your second question, I have used the idea of an interface combined with 
> an abstract class with success. The interface used by the consumers and the 
> abstract class extended by implementors.

I also think that an abstract class can be beneficial. However, I would not 
generalize this approach. In the case of the HV interfaces in question we have 
very simple interfaces 
(single method ones) with a very low likelihood that they will change. I don't 
think that the abstract base class is needed in this case, especially since it 
forces you to use inheritance.

--Hardy






_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to