Persisting Rich Domain Models Using NHibernate

46
PERSISTING RICH DOMAIN MODELS USING NHIBERNATE

description

Persisting Rich Domain Models Using NHibernate. IStarShip. Agenda. Intro Unit Of Work Identity Map Demos Basics cascade & inverse querying Many-to-many Legacy databases Performance. NHibernate. Origins in Java (Hiberante 2001) First release 2004 Last release 2.1.2 (Nov 2009) - PowerPoint PPT Presentation

Transcript of Persisting Rich Domain Models Using NHibernate

Page 1: Persisting Rich Domain Models Using NHibernate

PERSISTING RICH DOMAIN MODELS USING NHIBERNATE

Page 2: Persisting Rich Domain Models Using NHibernate
Page 3: Persisting Rich Domain Models Using NHibernate

IStarShip

Page 4: Persisting Rich Domain Models Using NHibernate
Page 5: Persisting Rich Domain Models Using NHibernate

• Intro• Unit Of Work• Identity Map• Demos• Basics• cascade & inverse• querying

• Many-to-many• Legacy databases• Performance

Agenda

Page 6: Persisting Rich Domain Models Using NHibernate

• Origins in Java (Hiberante 2001)• First release 2004• Last release 2.1.2 (Nov 2009)• Upcoming 3.0 release (Summer 2010)

• http://nhforge.org/

NHibernate

Page 7: Persisting Rich Domain Models Using NHibernate

Transparent persistance

Page 8: Persisting Rich Domain Models Using NHibernate

MAPPing

Page 9: Persisting Rich Domain Models Using NHibernate

Mapping

Page 10: Persisting Rich Domain Models Using NHibernate

ISession ISessionFactory

IQuery & ICriteriaITransaction

Page 11: Persisting Rich Domain Models Using NHibernate

ISession

Identity Map/L1 Cache

Unit of Work

Page 12: Persisting Rich Domain Models Using NHibernate

maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.

Page 13: Persisting Rich Domain Models Using NHibernate

DEMo

Page 14: Persisting Rich Domain Models Using NHibernate

idgenerators

increment

identity

sequence

hiloseqhilo

uuid.hexuuid.string

guid

guid.comb

assignednative

foreign

Page 15: Persisting Rich Domain Models Using NHibernate

id generator - identity

Page 16: Persisting Rich Domain Models Using NHibernate

id generator - hilo

Page 17: Persisting Rich Domain Models Using NHibernate

id generator - hilo

Page 18: Persisting Rich Domain Models Using NHibernate

PRoxy

Page 19: Persisting Rich Domain Models Using NHibernate

PRoxy

Page 20: Persisting Rich Domain Models Using NHibernate

PRoxy

Page 21: Persisting Rich Domain Models Using NHibernate

Fetch Select / Lazy / N plus 1

Page 22: Persisting Rich Domain Models Using NHibernate

Fetch join

Page 23: Persisting Rich Domain Models Using NHibernate

inverse false

Page 24: Persisting Rich Domain Models Using NHibernate

• none• save-update• delete• delete-orphan• all• all-delete-orphan

Cascade

Page 25: Persisting Rich Domain Models Using NHibernate

value objects

Page 26: Persisting Rich Domain Models Using NHibernate

Components

Page 27: Persisting Rich Domain Models Using NHibernate

Components

Page 28: Persisting Rich Domain Models Using NHibernate

Components

Page 29: Persisting Rich Domain Models Using NHibernate

• table per class hierarchy• table per subclass• table per concrete class

inheritance

Page 30: Persisting Rich Domain Models Using NHibernate

Model

Page 31: Persisting Rich Domain Models Using NHibernate

Table PER CLass

Page 32: Persisting Rich Domain Models Using NHibernate

concurrency

Page 33: Persisting Rich Domain Models Using NHibernate

Concurrency

Page 34: Persisting Rich Domain Models Using NHibernate

Concurrency - version

Page 35: Persisting Rich Domain Models Using NHibernate

Concurrency - version

Page 36: Persisting Rich Domain Models Using NHibernate

Concurrency - timestamp

Page 37: Persisting Rich Domain Models Using NHibernate

• Composite primary keys• Relations on non-primary keys• Join• SQL Queries• DB Generated fields

legacy

Page 38: Persisting Rich Domain Models Using NHibernate
Page 39: Persisting Rich Domain Models Using NHibernate

Property-ref

Page 40: Persisting Rich Domain Models Using NHibernate

Sql queries

Page 41: Persisting Rich Domain Models Using NHibernate

generated - insert

Page 42: Persisting Rich Domain Models Using NHibernate

• Batching• Eager loading (eliminate N+1)• Query Cache• L2 Cache

performance

Page 43: Persisting Rich Domain Models Using NHibernate

Batching

Page 44: Persisting Rich Domain Models Using NHibernate

Batching

Page 45: Persisting Rich Domain Models Using NHibernate

NHibernate = endless number of features

i could go on an on...

Page 46: Persisting Rich Domain Models Using NHibernate

• http://nhforge.org/• http://ayende.com/blog• http://www.codinginstinct.com• http://sharparchitecture.net/

resources

[email protected]

http://tlo.googlecode.com/svn/trunk/presentations/nhibernate_elevate