NHibernate for .NET

Post on 20-Nov-2014

7.040 views 4 download

Tags:

description

 

Transcript of NHibernate for .NET

1

NHibernate for .NETAlbert Kuo

2

Introduction to ORM Introduction to NHibernate Scenario NHibernate Demo◦Demo Process

Hibernate-config.xml Mapping files & classes SessionManager DAO (Data Access Object) Create ASPX to do testing

Reference

Agenda

3

Introduction to ORM

4

Object-relational mapping (aka ORM, O/RM, and O/R mapping) is a programming technique for converting data between incompatible type systems in relational databases and object-oriented programming languages (Wikipedia)◦Objects are hierarchical◦Databases are relational

What is ORM?

ORM

objects relational

5

Productivity◦ Eliminates lots of repetitive code – focus on business logic◦ Database schema is generated automatically

Maintainability◦ Fewer lines of code – easier to understand◦ Easier to manage change in the object model

Performance◦ Lazy loading – associations are fetched when needed◦ Caching

Database vendor independence◦ The underlying database is abstracted away◦ Can be configured outside the application

ORM Benefits

6

ORM and Architacture

Oracle, MS SQL Server, DB2, MySQL, Sybase, etc.

7

Introduction to NHibernate

8

Initially developed for Java◦ created in late 2001 by Gavin King◦ absorbed by the JBossGroup / Red Hat

Ported to .NET 1.1, 2.0, 3.5◦ Resulting product called “NHibernate”

All popular databases supported◦ Oracle, SQL Server, DB2, SQLite, PostgreSQL, MySQL,

Sybase, Firebird, … XML-based configuration files Good community support Free/open source -NHibernateis licensed under the

LGPL (Lesser GNU Public License)

Introduction to NHibernate

9

High-level overview of the Nhibernate API

10

NHibernate managing database access

11

Access Persistent Object

12

ISessionFactory◦One per database (or application)◦Expensive to create

Reads configuration ISession◦Portal to the database◦Saves, retrieves

ITransaction◦Encapsulates database transactions

Nhibernate in a Nutshell

13

Scenario

14

One people may have more than one contact One contact belongs to one people

Database schema

15

Use Case Diagram

16

Sequence diagram – create

17

Sequence diagram – Read

18

Sequence diagram – Update

19

Sequence diagram – Delete

20

Project Directories

Stored persistence tier-related code Stored presentation tier-related code

Data access objects

Value objects and mapping files

21

NHibernate

22

Libraries

Required library Required for lazy loading

Antlr3.Runtime.dll Iesi.Collections.dll log4net.dll NHibernate.dll

Castle.Core.dll Castle.DynamicProxy2.dll NHibernate.ByteCode.Ca

stle.dll

23

Hibernate-config.xml

Mapping files & classes SessionManager

DAO (Data Access Object)

Create ASPX to do testing

Demo Process

24

25

Hibernate-config.xml

26

Hibernate-config.xml

27

28

<class> declare a persistent class <id> defines the mapping from that property to the

primary key column◦ Specifies strategy

<property> declares a persistent property of the class <component> maps properties of a child object to

columns of the table of a parent class. Associations◦ One-to-Many◦ Many-to-One◦ Many-to-Many◦ One-to-One (uncommon)

Mapping Concepts

29

Mapping Collections

30

Mapping files & classes

ORM

objects relational

31

Mapping files & classes – cont.

32

Mapping files & classes – cont.

33

Mapping files & classes – cont.

34

Session Manager

[ISession]•Obtained from a SessionFactory instance•Responsible for storing and retrieving objects•Think of it as a collection of loaded objects related to a single unit of work

35

DAO (Data Access Object)

36

DAO (Data Access Object) – cont.

37

DAO (Data Access Object) – cont.

38

DAO (Data Access Object) – cont.

39

40

Transaction: A set of database operations which must be executed in entirety or not at all

Should end either with a commit or a rollback All communication with a database has to occur

inside a transaction!

Transactions

41

Transactions – cont.

Create a new record

43

Read data by criteria

Update record

45

Delete record

46

O/R Mapping◦ http://en.wikipedia.org/wiki/Object-relational_mapping

Official site◦www.hibernate.org

NHibernate in Action NHibernate Made Simple◦ http://www.codeproject.com/KB/database/Nhibernate_Ma

de_Simple.aspx

NHibernate Best Practices ◦ http://www.codeproject.com/KB/architecture/NHibernateB

estPractices.aspx

Reference