Hibernate.orgCommunity Documentation

HIBERNATE - Relational Persistence for Idiomatic Java

Hibernate Reference Documentation

3.5.6-Final

Legal Notice

September 15, 2010


Preface
1. Tutorial
1.1. Part 1 - The first Hibernate Application
1.1.1. Setup
1.1.2. The first class
1.1.3. The mapping file
1.1.4. Hibernate configuration
1.1.5. Building with Maven
1.1.6. Startup and helpers
1.1.7. Loading and storing objects
1.2. Part 2 - Mapping associations
1.2.1. Mapping the Person class
1.2.2. A unidirectional Set-based association
1.2.3. Working the association
1.2.4. Collection of values
1.2.5. Bi-directional associations
1.2.6. Working bi-directional links
1.3. Part 3 - The EventManager web application
1.3.1. Writing the basic servlet
1.3.2. Processing and rendering
1.3.3. Deploying and testing
1.4. Summary
2. Architecture
2.1. Overview
2.2. Instance states
2.3. JMX Integration
2.4. JCA Support
2.5. Contextual sessions
3. Configuration
3.1. Programmatic configuration
3.2. Obtaining a SessionFactory
3.3. JDBC connections
3.4. Optional configuration properties
3.4.1. SQL Dialects
3.4.2. Outer Join Fetching
3.4.3. Binary Streams
3.4.4. Second-level and query cache
3.4.5. Query Language Substitution
3.4.6. Hibernate statistics
3.5. Logging
3.6. Implementing a NamingStrategy
3.7. XML configuration file
3.8. J2EE Application Server integration
3.8.1. Transaction strategy configuration
3.8.2. JNDI-bound SessionFactory
3.8.3. Current Session context management with JTA
3.8.4. JMX deployment
4. Persistent Classes
4.1. A simple POJO example
4.1.1. Implement a no-argument constructor
4.1.2. Provide an identifier property (optional)
4.1.3. Prefer non-final classes (optional)
4.1.4. Declare accessors and mutators for persistent fields (optional)
4.2. Implementing inheritance
4.3. Implementing equals() and hashCode()
4.4. Dynamic models
4.5. Tuplizers
4.6. EntityNameResolvers
5. Basic O/R Mapping
5.1. Mapping declaration
5.1.1. Doctype
5.1.2. Hibernate-mapping
5.1.3. Class
5.1.4. id
5.1.5. Enhanced identifier generators
5.1.6. Identifier generator optimization
5.1.7. composite-id
5.1.8. Discriminator
5.1.9. Version (optional)
5.1.10. Timestamp (optional)
5.1.11. Property
5.1.12. Many-to-one
5.1.13. One-to-one
5.1.14. Natural-id
5.1.15. Component and dynamic-component
5.1.16. Properties
5.1.17. Subclass
5.1.18. Joined-subclass
5.1.19. Union-subclass
5.1.20. Join
5.1.21. Key
5.1.22. Column and formula elements
5.1.23. Import
5.1.24. Any
5.2. Hibernate types
5.2.1. Entities and values
5.2.2. Basic value types
5.2.3. Custom value types
5.3. Mapping a class more than once
5.4. SQL quoted identifiers
5.5. Metadata alternatives
5.5.1. Using XDoclet markup
5.5.2. Using JDK 5.0 Annotations
5.6. Generated properties
5.7. Column read and write expressions
5.8. Auxiliary database objects
6. Collection mapping
6.1. Persistent collections
6.2. Collection mappings
6.2.1. Collection foreign keys
6.2.2. Collection elements
6.2.3. Indexed collections
6.2.4. Collections of values and many-to-many associations
6.2.5. One-to-many associations
6.3. Advanced collection mappings
6.3.1. Sorted collections
6.3.2. Bidirectional associations
6.3.3. Bidirectional associations with indexed collections
6.3.4. Ternary associations
6.3.5. Using an <idbag>
6.4. Collection examples
7. Association Mappings
7.1. Introduction
7.2. Unidirectional associations
7.2.1. Many-to-one
7.2.2. One-to-one
7.2.3. One-to-many
7.3. Unidirectional associations with join tables
7.3.1. One-to-many
7.3.2. Many-to-one
7.3.3. One-to-one
7.3.4. Many-to-many
7.4. Bidirectional associations
7.4.1. one-to-many / many-to-one
7.4.2. One-to-one
7.5. Bidirectional associations with join tables
7.5.1. one-to-many / many-to-one
7.5.2. one to one
7.5.3. Many-to-many
7.6. More complex association mappings
8. Component Mapping
8.1. Dependent objects
8.2. Collections of dependent objects
8.3. Components as Map indices
8.4. Components as composite identifiers
8.5. Dynamic components
9. Inheritance mapping
9.1. The three strategies
9.1.1. Table per class hierarchy
9.1.2. Table per subclass
9.1.3. Table per subclass: using a discriminator
9.1.4. Mixing table per class hierarchy with table per subclass
9.1.5. Table per concrete class
9.1.6. Table per concrete class using implicit polymorphism
9.1.7. Mixing implicit polymorphism with other inheritance mappings
9.2. Limitations
10. Working with objects
10.1. Hibernate object states
10.2. Making objects persistent
10.3. Loading an object
10.4. Querying
10.4.1. Executing queries
10.4.2. Filtering collections
10.4.3. Criteria queries
10.4.4. Queries in native SQL
10.5. Modifying persistent objects
10.6. Modifying detached objects
10.7. Automatic state detection
10.8. Deleting persistent objects
10.9. Replicating object between two different datastores
10.10. Flushing the Session
10.11. Transitive persistence
10.12. Using metadata
11. Read-only entities
11.1. Making persistent entities read-only
11.1.1. Entities of immutable classes
11.1.2. Loading persistent entities as read-only
11.1.3. Loading read-only entities from an HQL query/criteria
11.1.4. Making a persistent entity read-only
11.2. Read-only affect on property type
11.2.1. Simple properties
11.2.2. Unidirectional associations
11.2.3. Bidirectional associations
12. Transactions and Concurrency
12.1. Session and transaction scopes
12.1.1. Unit of work
12.1.2. Long conversations
12.1.3. Considering object identity
12.1.4. Common issues
12.2. Database transaction demarcation
12.2.1. Non-managed environment
12.2.2. Using JTA
12.2.3. Exception handling
12.2.4. Transaction timeout
12.3. Optimistic concurrency control
12.3.1. Application version checking
12.3.2. Extended session and automatic versioning
12.3.3. Detached objects and automatic versioning
12.3.4. Customizing automatic versioning
12.4. Pessimistic locking
12.5. Connection release modes
13. Interceptors and events
13.1. Interceptors
13.2. Event system
13.3. Hibernate declarative security
14. Batch processing
14.1. Batch inserts
14.2. Batch updates
14.3. The StatelessSession interface
14.4. DML-style operations
15. HQL: The Hibernate Query Language
15.1. Case Sensitivity
15.2. The from clause
15.3. Associations and joins
15.4. Forms of join syntax
15.5. Referring to identifier property
15.6. The select clause
15.7. Aggregate functions
15.8. Polymorphic queries
15.9. The where clause
15.10. Expressions
15.11. The order by clause
15.12. The group by clause
15.13. Subqueries
15.14. HQL examples
15.15. Bulk update and delete
15.16. Tips & Tricks
15.17. Components
15.18. Row value constructor syntax
16. Criteria Queries
16.1. Creating a Criteria instance
16.2. Narrowing the result set
16.3. Ordering the results
16.4. Associations
16.5. Dynamic association fetching
16.6. Example queries
16.7. Projections, aggregation and grouping
16.8. Detached queries and subqueries
16.9. Queries by natural identifier
17. Native SQL
17.1. Using a SQLQuery
17.1.1. Scalar queries
17.1.2. Entity queries
17.1.3. Handling associations and collections
17.1.4. Returning multiple entities
17.1.5. Returning non-managed entities
17.1.6. Handling inheritance
17.1.7. Parameters
17.2. Named SQL queries
17.2.1. Using return-property to explicitly specify column/alias names
17.2.2. Using stored procedures for querying
17.3. Custom SQL for create, update and delete
17.4. Custom SQL for loading
18. Filtering data
18.1. Hibernate filters
19. XML Mapping
19.1. Working with XML data
19.1.1. Specifying XML and class mapping together
19.1.2. Specifying only an XML mapping
19.2. XML mapping metadata
19.3. Manipulating XML data
20. Improving performance
20.1. Fetching strategies
20.1.1. Working with lazy associations
20.1.2. Tuning fetch strategies
20.1.3. Single-ended association proxies
20.1.4. Initializing collections and proxies
20.1.5. Using batch fetching
20.1.6. Using subselect fetching
20.1.7. Fetch profiles
20.1.8. Using lazy property fetching
20.2. The Second Level Cache
20.2.1. Cache mappings
20.2.2. Strategy: read only
20.2.3. Strategy: read/write
20.2.4. Strategy: nonstrict read/write
20.2.5. Strategy: transactional
20.2.6. Cache-provider/concurrency-strategy compatibility
20.3. Managing the caches
20.4. The Query Cache
20.4.1. Enabling query caching
20.4.2. Query cache regions
20.5. Understanding Collection performance
20.5.1. Taxonomy
20.5.2. Lists, maps, idbags and sets are the most efficient collections to update
20.5.3. Bags and lists are the most efficient inverse collections
20.5.4. One shot delete
20.6. Monitoring performance
20.6.1. Monitoring a SessionFactory
20.6.2. Metrics
21. Toolset Guide
21.1. Automatic schema generation
21.1.1. Customizing the schema
21.1.2. Running the tool
21.1.3. Properties
21.1.4. Using Ant
21.1.5. Incremental schema updates
21.1.6. Using Ant for incremental schema updates
21.1.7. Schema validation
21.1.8. Using Ant for schema validation
22. Example: Parent/Child
22.1. A note about collections
22.2. Bidirectional one-to-many
22.3. Cascading life cycle
22.4. Cascades and unsaved-value
22.5. Conclusion
23. Example: Weblog Application
23.1. Persistent Classes
23.2. Hibernate Mappings
23.3. Hibernate Code
24. Example: Various Mappings
24.1. Employer/Employee
24.2. Author/Work
24.3. Customer/Order/Product
24.4. Miscellaneous example mappings
24.4.1. "Typed" one-to-one association
24.4.2. Composite key example
24.4.3. Many-to-many with shared composite key attribute
24.4.4. Content based discrimination
24.4.5. Associations on alternate keys
25. Best Practices
26. Database Portability Considerations
26.1. Portability Basics
26.2. Dialect
26.3. Dialect resolution
26.4. Identifier generation
26.5. Database functions
26.6. Type mappings
References