nhibernate for .net

43
NHibernate for .NET Albert Kuo 1

Upload: guest1e1f73

Post on 26-Jun-2015

2.259 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: NHibernate for .NET

1

NHibernate for .NETAlbert Kuo

Page 2: NHibernate for .NET

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

Page 3: NHibernate for .NET

3

Introduction to ORM

Page 4: NHibernate for .NET

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

Page 5: NHibernate for .NET

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

Page 6: NHibernate for .NET

6

ORM and Architacture

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

Page 7: NHibernate for .NET

7

Introduction to NHibernate

Page 8: NHibernate for .NET

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

Page 9: NHibernate for .NET

9

High-level overview of the Nhibernate API

Page 10: NHibernate for .NET

10

NHibernate managing database access

Page 11: NHibernate for .NET

11

Access Persistent Object

Page 12: NHibernate for .NET

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

Page 13: NHibernate for .NET

13

Scenario

Page 14: NHibernate for .NET

14

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

Database schema

Page 15: NHibernate for .NET

15

Use Case Diagram

Page 16: NHibernate for .NET

16

Sequence diagram – create

Page 17: NHibernate for .NET

17

Sequence diagram – Read

Page 18: NHibernate for .NET

18

Sequence diagram – Update

Page 19: NHibernate for .NET

19

Sequence diagram – Delete

Page 20: NHibernate for .NET

20

Project Directories

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

Data access objects

Value objects and mapping files

Page 21: NHibernate for .NET

21

NHibernate

Page 22: NHibernate for .NET

22

Hibernate-config.xml

Mapping files & classes SessionManager

DAO (Data Access Object)

Create ASPX to do testing

Demo Process

Page 23: NHibernate for .NET

23

Page 24: NHibernate for .NET

24

Hibernate-config.xml

Page 25: NHibernate for .NET

25

Page 26: NHibernate for .NET

26

<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

Page 27: NHibernate for .NET

27

Mapping Collections

Page 28: NHibernate for .NET

28

Mapping files & classes

ORM

objects relational

Page 29: NHibernate for .NET

29

Mapping files & classes – cont.

Page 30: NHibernate for .NET

30

Mapping files & classes – cont.

Page 31: NHibernate for .NET

31

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

Page 32: NHibernate for .NET

32

DAO (Data Access Object)

Page 33: NHibernate for .NET

33

DAO (Data Access Object) – cont.

Page 34: NHibernate for .NET

34

DAO (Data Access Object) – cont.

Page 35: NHibernate for .NET

35

DAO (Data Access Object) – cont.

Page 36: NHibernate for .NET

36

Page 37: NHibernate for .NET

37

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

Page 38: NHibernate for .NET

38

Transactions – cont.

Page 39: NHibernate for .NET

Create a new record

Page 40: NHibernate for .NET

40

Read data by criteria

Page 41: NHibernate for .NET

Update record

Page 42: NHibernate for .NET

42

Delete record

Page 43: NHibernate for .NET

43

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