[hibernate-dev] Hibernate OGM split in modules, ready for new integrations!

Sanne Grinovero sanne at hibernate.org
Wed Dec 7 07:47:34 EST 2011

Hi Alex,
I'm not sure if there is a way in Maven to have it find the other
modules automagically; if there is I'm not aware of it: I generally
expect projects to be built from the root, so what you did is the same
approach I usually take.
You can then build the module only to save some time, but it's up to
you to know that you don't need to install a new snapshot of the older
modules, or your tests will run with the previous installation, so
it's only safe if you don't make any change outside of your module
(which is great, but feel free to suggest changes in other areas).
Anyway for the record we all use Maven 3.0.3, I don't think anybody
tests the build on older Maven versions.

Regarding the formatting, please do use the Hibernate Core style, when
you see something formatted differently that was a mistake.


On 6 December 2011 21:45, Alex Snaps <alex.snaps at gmail.com> wrote:
> Hey Sanne,
> I started creating the layout for the hibernate-ogm-ehcache module.
> Now I stumbled on something, given I'm no maven expert, I think might
> not be quite right:
> from the parent project, it couldn't resolve the dependency to
> hibernate-ogm-core, so I first had to install that from the
> ./hibernate-ogm-core module, so I could build from the root.
> I think this might not be what is wanted though ... Is there a reason
> for that ? Or is this some weirdness I experience because I used mvn2
> still ?
> Otherwise I started the module on my fork on github and will work to
> get something passing tests as soon as possible.
> Thanks a lot for all these changes!
> Alex
> PS: Also, I started using my Hibernate-core code style, but look like
> this might use another, right ?
> On Sun, Dec 4, 2011 at 7:21 PM, Sanne Grinovero <sanne at hibernate.org> wrote:
>> Hi Greg,
>> we've implemented all changes in Hibernate OGM which we discussed at
>> Devoxx to make it easier for you to create a new module and get
>> started experimenting with an EHCache integration.
>> Actually to proof myself correct I've already created a new module,
>> and removed Infinispan from the main module relegating it in it's own
>> extension; so while in the main pom and possibly in some comments and
>> documentation Infinispan might still be mentioned as the "main"
>> supported engine, it's not the case anymore as far as the
>> implementation concerns: the tests of the core module are now using a
>> "spiced" ConcurrentHashMap instead and we'll improve on the docs too
>> as soon as we actually have an alternative. I hope this will let you
>> get started quickly, basically you only have to look into the
>> Infinispan module and think how to best implement the 6 trivial
>> classes.
>> The structure of the testsuite might need some warnings: since the
>> tests verify the functionality via the user API, we actually want to
>> re-run all the tests on each database. That's what Hibernate Core
>> always did, via a couple of properties it switches the JDBC driver and
>> connection details, just one class cares for the dialect which
>> encapsulates the database specifics; but most code is well tested
>> using a single database, so by default the testsuite runs H2 only,
>> while Jenkins re-runs the full testsuite on all supported databases.
>> In the case of Hibernate OGM, the code which we actually want to test
>> is the integration with each database, so running tests on only one of
>> them is not really an option.
>> To re-run the same testsuite multiple times, and to keep all the
>> database specific code and dependencies in different modules, we're
>> hacking a bit around Maven by packaging the testsuite from the main
>> module and referring to the same tests again in each module.
>> Basically I'd suggest to have a look at how the
>> hibernate-ogm-infinispan module reuses the test code from
>> hibernate-ogm-core; most of the magic is triggered by the
>> maven-dependency-plugin in the parent pom.xml and the
>> org.hibernate.ogm.test.utils.InfinispanTestHelper in the test sources.
>> Of course you can add additional EHCache tests as you like in the new
>> hibernate-ogm-ehcache module, but I'd suggest to reuse all tests from
>> hibernate-ogm-core.
>> We can certainly polish this approach if it doesn't proof sound in
>> practice, but I hope it's a good way to get started with it. It should
>> provide some convergence of features across "databases"; if some
>> feature can really not be implemented we can introduce flags to
>> disable groups of tests in specific modules; for now there exists one
>> such flag which disables JTA integration [1] : I'm using it with the
>> Map implementation as I didn't implement transactional support on it.
>> In theory you could introduce more such flags if you really need to
>> disable some other tests, but that would be the least desirable option
>> as we hope to provide a consistent behaviour across different backing
>> databases as much as possible.
>> The basic build information can be found here:
>> http://docs.jboss.org/hibernate/ogm/3.0/reference/en-US/html/ogm-howtocontribute.html
>> For any question, we're looking forward to help you!
>> Regards,
>> Sanne
>> 1 - org.hibernate.ogm.test.utils.TestableGridDialect.backendSupportsTransactions()
> --
> Alex Snaps <alex.snaps at gmail.com>
> Senior Software Engineer - Terracotta
> http://twitter.com/alexsnaps
> http://www.linkedin.com/in/alexsnaps

More information about the hibernate-dev mailing list