This has come up a few times so I thought I'd write up the ways to handle multi-tenancy in Hibernate. This is not an exhaustive list. We wont go into database vendor specific features (Oracle VPD, etc) for example. Generally speaking there are 3 ways to factor multi-tenancy into your database design:
Andy Glover wrote an excellent article about Hibernate Shards a few weeks ago. (It seems we missed linking to it here.)
There has been a couple of interesting blog entries about Hibernate Shards and data sharding / partitioning in the last few days (here and there). Both give a decent five / ten minutes overview of Hibernate Shards.
I will be giving a talk at the Atlanta JUG next Tuesday (18th).
This is a pretty big day for the Hibernate family. We welcome three new top level projects: