Professional Documents
Culture Documents
9 Fluent Hibernate PDF
9 Fluent Hibernate PDF
Raunarstvo i informatika
Katedra za raunarstvo
Elektronski fakultet u Niu
Fluent NHibernate
Letnji semestar 2015
1
Fluent NHibernate
2
Sistemi baza podataka
Fluent NHibernate
3
Sistemi baza podataka
Fluent NHibernate
4
Sistemi baza podataka
Fluent NHibernate
5
Sistemi baza podataka
Fluent NHibernate
6
Sistemi baza podataka
Fluent NHibenrate
Struktura projekta:
Direktorijum Entiteti sadre domenske entitete (klase)
Direktorijum Mapiranja sadri klase koje domenske entitete mapiraju na
relacionu bazu podataka
7
Sistemi baza podataka
Fluent NHibernate
Entitet PRODAVNICA
Domenska klasa Prodavnica.cs
Nalazi se u direktorijumu Entiteti. Ovde e biti kreirane sve domenske klase.
Klasa mora da bude deklarisana kao public u okviru svog namespace-a
Sva svojstva klase koja e biti mapirani na kolone u tabeli relacione baze
podataka moraju biti deklarisana kao public
Sva svojstva klase koja e biti mapirana na kolone u tabeli relacione baze
podataka moraju biti deklarisana kao virtual. NHibernate predefinie sva
svojstva kako bi obezbedio proxy za lazy load uitavanje podataka.
8
Sistemi baza podataka
Fluent NHibernate
9
Sistemi baza podataka
Fluent NHibernate
Mapiranje PRODAVNICA
Klasa ProdavnicaMapiranje.cs
Nalazi se u direktorijumu Mapiranja. Ovde e biti kreirane sve klase koje
mapiraju domenske entitete na relacionu bazu podataka.
10
Sistemi baza podataka
Fluent NHibernate
11
Sistemi baza podataka
Fluent Nhibernate
12
Sistemi baza podataka
Fluent NHibernate
ISessionFactory
13
Sistemi baza podataka
Fluent NHibernate
14
Sistemi baza podataka
Fluent NHibernate
Fluent NHibernate
16
Sistemi baza podataka
Fluent NHibernate
Fluent NHibernate
18
Sistemi baza podataka
Mapiranja
osnovnu
klasu
za
sva
public ProdavnicaMapiranja()
{
}
}
19
Sistemi baza podataka
Mapiranja
Id
20
Sistemi baza podataka
Mapiranja
Mapiranja
.Column("NAZIV");
22
Sistemi baza podataka
Mapiranja
23
Sistemi baza podataka
Mapiranja
References - metoda koja omoguava kreiranju meany-toone relacija izmeu entiteta i primenjuje se na many strani.
Kreira referencu na jedan entitet.
U terminologiji baza podataka: tabela koja poseduje strani klju koji
referencira primarni klju u nekoj drugoj tabeli.
Za sluaj klasa Prodavnica i Odeljenje:
class Prodavnica
{
}
class Odeljenje
{
public virtual Prodavnica PripadaProdavnici{get; set;}
}
24
Sistemi baza podataka
Mapiranja
25
Sistemi baza podataka
Mapiranja
class Prodavnica
{
public virtual IList<Odeljenje> Odeljenja {get; set;}
public Prodavnica()
{
Odeljenja = new List<Odeljenje>();
}
}
26
Sistemi baza podataka
Mapiranja
.KeyColumn("BROJP");
.KeyColumn("BROJP")
.Not.LazyLoad();
27
Sistemi baza podataka
Mapiranja
28
Sistemi baza podataka
Mapiranje
29
Sistemi baza podataka
Mapiranja
.KeyColumn("BROJP")
.Cascade.All();
30
Sistemi baza podataka
Mapiranja
2.
Snimaju deca (lanovi kolekcije) kod kojih se vrednost stranog kljua postavi na
NULL.
3.
31
Sistemi baza podataka
Mapiranja
32
Sistemi baza podataka
Mapiranja
s.Save(p);
33
Sistemi baza podataka
Mapiranja
p.Odeljenja.Add(o);
p.Odeljenja.Add(o1);
34
Sistemi baza podataka
Mapiranja
System.Collections.IList
System.Collections.IDictionary
System.Collections.Generic.IEnumerable<T>
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>
System.Collections.Generic.IDictionary<K, V>
System.Collections.Generic.ISet<T>
35
Sistemi baza podataka
Mapiranja
HasManyToMany
36
Sistemi baza podataka
Mapiranja
37
Sistemi baza podataka
Mapiranja
38
Sistemi baza podataka
Mapiranja
39
Sistemi baza podataka
Mapiranja
HasManyToMany(x => x.Prodavnice)
.Table("RADI_U")
.ParentKeyColumn("JBR_RADNIK")
.ChildKeyColumn("BROJP");
40
Sistemi baza podataka
Mapiranja
.ParentKeyColumn("BROJP")
.ChildKeyColumn("JBR_RADNIK")
.Inverse()
.Cascade.All();
41
Sistemi baza podataka
Mapiranja
42
Sistemi baza podataka
Mapiranja
43
Sistemi baza podataka
Mapiranja
44
Sistemi baza podataka
Mapiranja
45
Sistemi baza podataka
Mapiranja
46
Sistemi baza podataka
Mapiranja
47
Sistemi baza podataka
Mapiranja
48
Sistemi baza podataka
Mapiranja
.Cascade.All()
.Inverse();
49
Sistemi baza podataka
Mapiranja
50
Sistemi baza podataka
Mapiranja
51
Sistemi baza podataka
Mapiranja
Primer: http://www.codeproject.com/Articles/232034/Inheritancemapping-strategies-in-Fluent-Nhibernat
52
Sistemi baza podataka
Mapiranja
53
Sistemi baza podataka
Mapiranja
54
Sistemi baza podataka
Mapiranja
55
Sistemi baza podataka
Mapiranja
56
Sistemi baza podataka
Mapiranja
57
Sistemi baza podataka
Mapiranja
58
Sistemi baza podataka
Mapiranja
59
Sistemi baza podataka
Mapiranja
60
Sistemi baza podataka
Mapiranja
61
Sistemi baza podataka
Mapiranja
62
Sistemi baza podataka
Mapiranja
63
Sistemi baza podataka
Mapiranja
64
Sistemi baza podataka
Mapiranja
65
Sistemi baza podataka
Mapiranja
66
Sistemi baza podataka
Mapiranja
67
Sistemi baza podataka
Mapiranja
68
Sistemi baza podataka
Mapiranja
69
Sistemi baza podataka
Mapiranja
70
Sistemi baza podataka
Mapiranja
71
Sistemi baza podataka
Mapiranja
72
Sistemi baza podataka
Mapiranja
73
Sistemi baza podataka
Mapiranja
74
Sistemi baza podataka
Mapiranja
75
Sistemi baza podataka
Mapiranja
Mapiranja
DiscriminateSubClassesOnColumn("")
.Formula("predikat")
77
Sistemi baza podataka
Mapiranja
78
Sistemi baza podataka
Mapiranja
79
Sistemi baza podataka