NHibernate - Relational Persistence for Idiomatic .NET

NHibernate Reference Documentation

1.2.0


Table of Contents

Preface
1. Quickstart with IIS and Microsoft SQL Server
1.1. Getting started with NHibernate
1.2. First persistent class
1.3. Mapping the cat
1.4. Playing with cats
1.5. Finally
2. Architecture
2.1. Overview
2.2. Instance states
2.3. Contextual Sessions
3. ISessionFactory Configuration
3.1. Programmatic Configuration
3.2. Obtaining an ISessionFactory
3.3. User provided ADO.NET connection
3.4. NHibernate provided ADO.NET connection
3.5. Optional configuration properties
3.5.1. SQL Dialects
3.5.2. Outer Join Fetching
3.5.3. Custom ICacheProvider
3.5.4. Query Language Substitution
3.6. Logging
3.7. Implementing an INamingStrategy
3.8. XML Configuration File
4. Persistent Classes
4.1. A simple POCO example
4.1.1. Declare accessors and mutators for persistent fields
4.1.2. Implement a default constructor
4.1.3. Provide an identifier property (optional)
4.1.4. Prefer non-sealed classes and virtual methods (optional)
4.2. Implementing inheritance
4.3. Implementing Equals() and GetHashCode()
4.4. Lifecycle Callbacks
4.5. IValidatable callback
5. Basic O/R Mapping
5.1. Mapping declaration
5.1.1. XML Namespace
5.1.2. hibernate-mapping
5.1.3. class
5.1.4. id
5.1.4.1. generator
5.1.4.2. Hi/Lo Algorithm
5.1.4.3. UUID Hex Algorithm
5.1.4.4. UUID String Algorithm
5.1.4.5. GUID Algorithms
5.1.4.6. Identity columns and Sequences
5.1.4.7. Assigned Identifiers
5.1.5. composite-id
5.1.6. discriminator
5.1.7. version (optional)
5.1.8. timestamp (optional)
5.1.9. property
5.1.10. many-to-one
5.1.11. one-to-one
5.1.12. component, dynamic-component
5.1.13. subclass
5.1.14. joined-subclass
5.1.15. map, set, list, bag
5.1.16. import
5.2. NHibernate Types
5.2.1. Entities and values
5.2.2. Basic value types
5.2.3. Custom value types
5.2.4. Any type mappings
5.3. SQL quoted identifiers
5.4. Modular mapping files
6. Collection Mapping
6.1. Persistent Collections
6.2. Mapping a Collection
6.3. Collections of Values and Many-To-Many Associations
6.4. One-To-Many Associations
6.5. Lazy Initialization
6.6. Sorted Collections
6.7. Using an <idbag>
6.8. Bidirectional Associations
6.9. Ternary Associations
6.10. Heterogeneous Associations
6.11. Collection examples
7. Component Mapping
7.1. Dependent objects
7.2. Collections of dependent objects
7.3. Components as IDictionary indices
7.4. Components as composite identifiers
7.5. Dynamic components
8. Inheritance Mapping
8.1. The Three Strategies
8.2. Limitations
9. Manipulating Persistent Data
9.1. Creating a persistent object
9.2. Loading an object
9.3. Querying
9.3.1. Scalar queries
9.3.2. The IQuery interface
9.3.3. Filtering collections
9.3.4. Criteria queries
9.3.5. Queries in native SQL
9.4. Updating objects
9.4.1. Updating in the same ISession
9.4.2. Updating detached objects
9.4.3. Reattaching detached objects
9.5. Deleting persistent objects
9.6. Flush
9.7. Ending a Session
9.7.1. Flushing the Session
9.7.2. Committing the database transaction
9.7.3. Closing the ISession
9.8. Exception handling
9.9. Lifecyles and object graphs
9.10. Interceptors
9.11. Metadata API
10. Transactions And Concurrency
10.1. Configurations, Sessions and Factories
10.2. Threads and connections
10.3. Considering object identity
10.4. Optimistic concurrency control
10.4.1. Long session with automatic versioning
10.4.2. Many sessions with automatic versioning
10.4.3. Customizing automatic versioning
10.4.4. Application version checking
10.5. Session disconnection
10.6. Pessimistic Locking
10.7. Connection Release Modes
11. HQL: The Hibernate Query Language
11.1. Case Sensitivity
11.2. The from clause
11.3. Associations and joins
11.4. The select clause
11.5. Aggregate functions
11.6. Polymorphic queries
11.7. The where clause
11.8. Expressions
11.9. The order by clause
11.10. The group by clause
11.11. Subqueries
11.12. HQL examples
11.13. Tips & Tricks
12. Criteria Queries
12.1. Creating an ICriteria instance
12.2. Narrowing the result set
12.3. Ordering the results
12.4. Associations
12.5. Dynamic association fetching
12.6. Example queries
12.7. Projections, aggregation and grouping
12.8. Detached queries and subqueries
13. Native SQL
13.1. Using an ISQLQuery
13.1.1. Scalar queries
13.1.2. Entity queries
13.1.3. Handling associations and collections
13.1.4. Returning multiple entities
13.1.4.1. Alias and property references
13.1.5. Returning non-managed entities
13.1.6. Handling inheritance
13.1.7. Parameters
13.2. Named SQL queries
13.2.1. Using return-property to explicitly specify column/alias names
13.2.2. Using stored procedures for querying
13.2.2.1. Rules/limitations for using stored procedures
13.3. Custom SQL for create, update and delete
13.4. Custom SQL for loading
14. Filtering data
14.1. NHibernate filters
15. Improving performance
15.1. Fetching strategies
15.1.1. Working with lazy associations
15.1.2. Tuning fetch strategies
15.1.3. Single-ended association proxies
15.1.4. Initializing collections and proxies
15.1.5. Using batch fetching
15.1.6. Using subselect fetching
15.2. The Second Level Cache
15.2.1. Cache mappings
15.2.2. Strategy: read only
15.2.3. Strategy: read/write
15.2.4. Strategy: nonstrict read/write
15.3. Managing the caches
15.4. The Query Cache
15.5. Understanding Collection performance
15.5.1. Taxonomy
15.5.2. Lists, maps, idbags and sets are the most efficient collections to update
15.5.3. Bags and lists are the most efficient inverse collections
15.5.4. One shot delete
15.6. Batch updates
15.7. Multi Query
16. Toolset Guide
16.1. Schema Generation
16.1.1. Customizing the schema
16.1.2. Running the tool
16.1.3. Properties
16.1.4. Using Ant
16.1.5. Incremental schema updates
16.1.6. Using Ant for incremental schema updates
16.2. Code Generation
16.2.1. The config file (optional)
16.2.2. The meta attribute
16.2.3. Basic finder generator
16.2.4. Velocity based renderer/generator
16.3. Mapping File Generation
16.3.1. Running the tool
17. Example: Parent/Child
17.1. A note about collections
17.2. Bidirectional one-to-many
17.3. Cascading lifecycle
17.4. Using cascading Update()
17.5. Conclusion
18. Example: Weblog Application
18.1. Persistent Classes
18.2. Hibernate Mappings
18.3. NHibernate Code
19. Example: Various Mappings
19.1. Employer/Employee
19.2. Author/Work
19.3. Customer/Order/Product
20. Best Practices
I. NHibernateContrib Documentation
Preface
21. NHibernate.Caches
21.1. How to use a cache?
21.2. Prevalence Cache Configuration
21.3. SysCache Configuration
22. NHibernate.Mapping.Attributes
22.1. What's new?
22.2. How to use it?
22.3. Tips
22.4. Know issues and TODOs
22.5. Developer Notes
23. NHibernate.Tool.hbm2net
24. Nullables
24.1. How to use it?