persisting rich domain models using nhibernate

46
PERSISTING RICH DOMAIN MODELS USING NHIBERNATE

Upload: bandele

Post on 23-Feb-2016

39 views

Category:

Documents


0 download

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

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