nhibernate for .net
DESCRIPTION
TRANSCRIPT
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