In L1 Hibernate cache we can create multiple transactions in a single session object so we are sharing session between multiple transactions. All these transactions are managed by us. But say we have JBoss now which has JTA enabled now what happens? I think we have one transaction created by the Container and In code we have our own transactions still the session can be seen only by the child transactions created by us. But not between the two different master transactions created by the container For this we have to use L2 cache.