NHibernate - Relational Persistence for Idiomatic .NET
Next
NHibernate - Relational Persistence for Idiomatic .NET
NHibernate Reference Documentation
1.0.2
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
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. Application version checking
10.5. Session disconnection
10.6. Pessimistic Locking
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
13. Native SQL Queries
13.1. Creating a SQL based IQuery
13.2. Alias and property references
13.3. Named SQL queries
14. Improving performance
14.1. Understanding Collection performance
14.1.1. Taxonomy
14.1.2. Lists, maps and sets are the most efficient collections to update
14.1.3. Bags and lists are the most efficient inverse collections
14.1.4. One shot delete
14.2. Proxies for Lazy Initialization
14.3. Using batch fetching
14.4. The Second Level Cache
14.4.1. Cache mappings
14.4.2. Strategy: read only
14.4.3. Strategy: read/write
14.4.4. Strategy: nonstrict read/write
14.5. Managing the ISession Cache
14.6. The Query Cache
15. Toolset Guide
15.1. Schema Generation
15.1.1. Customizing the schema
15.1.2. Running the tool
15.1.3. Properties
15.1.4. Using Ant
15.1.5. Incremental schema updates
15.1.6. Using Ant for incremental schema updates
15.2. Code Generation
15.2.1. The config file (optional)
15.2.2. The meta attribute
15.2.3. Basic finder generator
15.2.4. Velocity based renderer/generator
15.3. Mapping File Generation
15.3.1. Running the tool
16. Example: Parent/Child
16.1. A note about collections
16.2. Bidirectional one-to-many
16.3. Cascading lifecycle
16.4. Using cascading Update()
16.5. Conclusion
17. Example: Weblog Application
17.1. Persistent Classes
17.2. Hibernate Mappings
17.3. NHibernate Code
18. Example: Various Mappings
18.1. Employer/Employee
18.2. Author/Work
18.3. Customer/Order/Product
19. Best Practices
I. NHibernateContrib Documentation
Preface
20. NHibernate.Caches
20.1. How to use a cache?
20.2. Prevalence Cache Configuration
20.3. SysCache Configuration
21. NHibernate.Mapping.Attributes
21.1. How to use it?
21.2. Tips
21.3. Know issues and TODOs
21.4. Developer Notes
22. NHibernate.Tool.hbm2net
23. Nullables
23.1. How to use it?