>>>>> Jean-Baptiste Onofré <[email protected]>:

> It's pretty close to Karaf JPA and JDBC examples right ?

Not sure.  The JDBC example gets a DataSource and I'm unable to see
where the DataSource comes from?
 
https://github.com/apache/karaf/blob/master/examples/karaf-jdbc-example/karaf-jdbc-example-provider/src/main/java/org/apache/karaf/examples/jdbc/provider/BookingServiceJdbcImpl.java#L74

Hm... it loads pax-jdbc-derby, but that would only give it a
DataSourceFactory...?
 
https://github.com/apache/karaf/blob/master/examples/karaf-jdbc-example/karaf-jdbc-example-features/src/main/feature/feature.xml#L49

Something needs to take that DataSourceFactory and create a DataSource
for an actual database.  And I can't find that something in
 https://github.com/apache/karaf/tree/master/examples/karaf-jdbc-example

Hm... the first <config> element seems to contain the config necessary
to create a DataSource of an in-memory derby so it is possibly
karaf-jdbc-example-provider that creates the DataSource...?  But I'm
unable to see what it is in there that does the actual work?

So OK the differences:
 1. Going from DataSourceFactory to DataSource
   a. The JDBC example uses some magic I don't know about to get from a
      DataSourceFactory to a DataSource (something that I should know
      about perhaps, but don't), based on config in the feature
   b. The method of my blogpost introduces a DS component that listens for
      DataSourceFactory and provides a DataSource
 2. Schema setup
   a. The JDBC example has derby-specific table setup in the
      BookingServiceImpl class
       
https://github.com/apache/karaf/blob/master/examples/karaf-jdbc-example/karaf-jdbc-example-provider/src/main/java/org/apache/karaf/examples/jdbc/provider/BookingServiceJdbcImpl.java#L46
   b. the DS component of the blog post uses liquibase to set up the
      schema in a database-independent manner
 3. Switching databases 
   a. To swap a database the config magic in the feature will have to be changed
   b. The method in the blog post allows switching between databases by
      swapping the DS component for a different component

The core point of the blogpost is that the JDBC connection and setup is
lifted out of the business logic and into a pluggable component.  And
then I swap that component if I want to use PostgreSQL instead of derby.


The JPA example expects a JpaTemplate example
 
https://github.com/apache/karaf/blob/master/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-eclipselink/src/main/java/org/apache/karaf/examples/jpa/provider/ds/eclipselink/BookingServiceImpl.java#L34
and doesn't use any JDBC stuff directly...? (I couldn't find the string
 "jdbc" in the example)

Reply via email to