This package defines the API for plugging in bytecode libraries
for usage by Hibernate. Hibernate uses these bytecode libraries
in three scenarios:
Reflection optimization - to speed up the performance of
POJO entity and component conctruction and field/property access
Proxy generation - runtime building of proxies used for
deferred loading of lazy entities
Field-level interception - build-time instrumentation of entity
classes for the purpose of intercepting field-level access (read/write)
for both lazy loading and dirty tracking.
Currently, both CGLIB and Javassist are supported out-of-the-box.
Note that for field-level interception, simply plugging in a new {@link BytecodeProvider}
is not enough for Hibernate to be able to recognize new providers. You would additionally
need to make appropriate code changes to the {@link org.hibernate.intercept.Helper}
class. This is because the detection of these enhanced classes is needed in a static
environment (i.e. outside the scope of any {@link org.hibernate.SessionFactory}.
Note that in the current form the ability to specify a different bytecode provider
is actually considered a global settings (global to the JVM).
This package defines APIs and implementations for the
second-level cache and query cache.
Cache abstracts the underlying cache implementation.
CacheConcurrencyStrategy abstracts various strategies
for maintaining consistency between the cache and database.
QueryCache abstracts the query result set cache.
This package exposes a Hibernate instance via JMX.
HibernateService allows configuration and management
of the Hibernate runtime. StatisticsService
reports information that might be useful for performance
tuning.
This package abstracts the persistence mechanism for collections.
Concrete implementations of CollectionPersister
define strategies for persistence of particular collection
roles. Collection persisters may optionally implement
QueryableCollection if they should be queryable
using HQL or loaded using OuterJoinLoader.
This package abstracts persistence mechanisms for
entities, and defines the Hibernate runtime
metamodel.
Strategies for persisting entities implement the
EntityPersister interface. Optionally,
they may implement certain additional interfaces
that define contracts with various loaders.
Concrete implementations in this package define
the built-in inheritance mapping strategies.
The instrument tool for adding field-interception hooks
to persistent classes using built-time bytecode processing. Use
this tool only if you wish to take advantage of lazy property
fetching (the <lazy> mapping element).
This package abstracts the underlying transaction mechanism
(JTA or JDBC) and provides strategies for obtaining application
server TransactionManagers.
This package defines a runtime metamodel for entities at
the object level and abstracts the differences between
the various entity modes. It is unaware of mappings to
the database.
(This package is still undergoing maturation and will change
over the next few months.)