NHibernate<br />Sinhviênthựchiện:<br /><ul><li>07k1034_Huỳnh HồAnhĐức
07k1094_Phạm ThịTúNhi
07k1099_Vũ ĐỗHồngNhung</li></li></ul><li>
I. Môtả<br />
I. Môtả<br />KháiNiệm<br />LịchSử<br />Chứcnăng<br />
What’s Nhibernate?<br />?<br />
NHibernatelàmộtcảngcủaHibernate Corecho Java vào Framework. NETvàmộtsốứngdụngkhác.<br />Nókiêntrìxửlýcácđốitượngđồngbằng N...
Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt<br />Điềunàylàmchonócóthểthiếtkế logic kin...
NHibernateđượcbắtđầubởi Tom Barrett, vàsauđóđượcchỉnhsửabởi Mike Doerflervà Peter Smulovics. <br />Vàocuốinăm 2005, JBoss ...
CÁC PHIÊN BẢN CỦA NHIBERNATE<br />Phiênbản 1.0 đượcnhânđôicáctínhnăngthiếtlậpcủa Hibernate 2.1, cũngnhưmộtsốtínhnăngtừ Hib...
cáctínhnăngchính<br />TínhnăngchínhcủaNHibernatelàánhxạtừcácloại NET. lớphọc CSDL đểbàn (và CLR từdữliệuSQLcácloạidữliệu)<...
cáctínhnăngchính<br />No build-time bytecode enhancement .Khôngcóthờigiantăngcườngbytecode-xâydựng - khôngcómãsốthếhệphụho...
cáctínhnăngchính<br />Support for "conversations“- Hỗtrợcho "cuộchộithoại" - NHibernatehỗtrợhoàncảnhsốngbềnbỉ, lâudài, thá...
II. HoạtĐộng<br />
TìmhiểuNhibernate<br />
1. CàiĐặtNhibernate<br />Tảixuốngcáctập tin NHibernate-2.1.2.GA-bin<br />tạoramộtthưmụccótênNhibernate-Demo ngoàiDesktop  ...
TẠO DỰ ÁN<br /><ul><li>Đểbắtđầuxâydựng 1 dựánmới .Bạnthựchiệncácbướcsau</li></ul>Bước 1: Tao ra 1 Folder con tên “UngDungN...
Demo tạovàCàiđặtNhibernate<br />
tạovàCàiđặtNhibernate<br />
B1 :Tao 1 Folder ở nơibạnthích(desktop)<br />
B2:Tải NHibernate-2.1.2.GA-bin.zip (Google.com) lưuvàothưmụcvừatạogiảinénnó<br />
B3:Mở VS(phiểnbảnnàocũngđược) tạo 1 solution đặttênnàobạnthích(demoNhibernate)lưunóvào folder bạntạo<br />
B4: tạoClassLibrary (thuvienNhibernate)<br />
B5.tạo Application (ApliNhibernate) lưuvào Folder mới (Apli) rồilưu folder nàyvào Solution củabạn<br />
Giaodiệncủa Solution củabạnsẽnhưthếnày<br />
2. Xácđịnhđốitượngkinhdoanh<br /><ul><li>Cho phépbắtđầubằngcáchxácđịnhmộtmiềnrấtđơngiản:
Tạo 1 Folder cótên DTO thuộclớpthưviệnthuvienNhibernate(lớpthưviệntạotrướcđó)
Tạo 2 file nhưhìnhdưới</li></li></ul><li>LớpđầutiênđặttênSinhVien.cs: cókhaibáonhưsau :<br />
namespace thuvienNhibernate.DTO<br />{<br />	public  class SinhVien<br />	{<br />	private int _Mssv, MaLop,;<br />	private...
3. XácđịnhBảnĐồ<br />Đểcóthểtồntạitrườnghợpcủathựcthểnàytrongmột CSDL<br />NHibernate  (Mộtthểhiệncủamộtthựcthểtrongmiềntư...
	Properties thêm schema đếntập tinSinhVien.Bhm.xml<br />
<?xml version="1.0" encoding="utf-8" ?><br /><hibernate-mapping  xmlns="urn:nhibernate-mapping-2.2“<br />			namespace="thu...
<ul><li>Tươngtựtạotiếplớpthứ 2 :Lop.csvàcấuhìnhgiốnglớpSinhVien.cs</li></li></ul><li><ul><li>Trongmộttập tin bảnđồkhilớpth...
Đểthựchiệncác xml cóthểđịnhnghĩatênlắpráp (trongđócáclớpmiềnđượcthựchiệnvàkhônggiantêncủalớphọcmiềntrongcácthuộcassembly a...
Tươngtựnhưbáocáosửdụngtrong C # lầnđầutiênxácđịnhmộtkhóachínhchocácđơnvịsảnphẩm
Vềmặtkỹthuật : cóthểlấytêntàisảncủasảnphẩmkểtừkhitàisảnnàyphảiđượcxácđịnhvàphảiđượcduynhất</li></li></ul><li>4. Cấu HÌNH n...
Cấuhìnhnhưsau :<br /><?xml version="1.0" encoding="utf-8" ?><br /><hibernate-configuration xmlns="urn:nhibernate-configura...
5. Cấu HÌNH nhIBERNATE<br />Thêmmột CSDL trốngrỗng, gọilàQLSinhVien.sdfchodựánthuvienNhibernate(chọnCSDLđịaphươngnhưbảnmẫu...
KiỂM TRA CÁC THIẾT LẬP<br /><ul><li>Đầutiênxác minh cónhững file sautrongthưmục.</li></ul>Nhibernatetạo ở đầu file<br />
Lưu ý: cácSystem.Data.SqlServerCe.dllnằm ở thưmục Desktop-sub<br />Tấtcảcáctập tin kháccóthểtìmthấytrongthưmụcNHibernate<b...
ThêmmộtthamchiếuđếncácdựánthuvienNhibernatetrongdựánthửnghiệm<br />Thêmmộtbảnsaocủahibernate.cfg.xmlvàothưmụcgốccủadựánnày...
Ngoàirathêmtàiliệuthamkhảođể NHibernate.dll, nunit.framework.dllvàSystm.Data.SqlServerCe.dll<br />
Copy tấtcảcác file “*. dll” nằmtrongNHibernate-2.1.2.GA-bin chovaophan Debug củaỨngDụng<br />
Ta có Code :<br />using System;<br />Using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br ...
		public static NHibernate.ISessionFactoryGetSessionFactory()<br />		{<br />           		if (_SessionFactory == null)<br /...
THIẾT LẬP TRUY VẤN ĐẾN CSDL<br />Tạo  class SinhVienTruyvan.cs .VớilớpnàytạocáchàmIsert ,Delete,Update,Load CSDL<br />
SELECT<br /> public static DataTableGetTable()<br />{<br />DataTabledt = new DataTable();<br />OleDbConnectioncn;<br />cn ...
Examining INSERTs with NHibernate<br />
INSERT<br /> public static void Add(SinhViensv)<br />{         <br />ISession session = NHibernateHelper.GetCurrentSession...
Examining DELETEs with NHibernate<br />
DELETE<br /> public static void Add(SinhViensv)<br />{         <br />ISession session = NHibernateHelper.GetCurrentSession...
Examining UPDATEs with NHibernate<br />
UPDATE<br /> public static void Add(SinhViensv)<br />{         <br />ISession session = NHibernateHelper.GetCurrentSession...
INDENTIFYING ANNOYANCES IN THESE USAGE PATTERN<br /><ul><li>Allows call like session.SaveOrUpdate(sv);
Nhibernate will …</li></ul>Check if the object is in the sesion<br />If its not there,call Implicit Save(sv);<br />If its ...
Thêmmộtthưmục BUS thuộcdựánSinhVienNHibernate.<br />Thêmmộtgiaodiện class cótênSinhVienBUS. Xácđịnhcácgiaodiệnsau :<br />u...
Dòng_SessionFactory = config.BuildSessionFactory()<br />Đâylàmộtquátrìnhtốnkémvà do đónênđượcthựchiệnchỉmộtlần. Đólàlý do ...
Upcoming SlideShare
Loading in...5
×

Nhibernate -Co ban

3,866

Published on

Published in: Education, Technology
3 Comments
1 Like
Statistics
Notes
  • Hic. Các bác này translate = google rồi paste vào slide ah. :( chẳng tôn trọng người đọc tý nào
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • mình cũng muốn tìm hiểu cơ bản về nó, chưa nắm rõ đc nhìu nên mong muốn đc các bạn giúp đỡ. Chân thành cảm ơn các bạn, mong đc tìm hiểu sớm ... :D
    Email: nhtung.2309@gmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • xin chao anh chi hien tai em dang lam de tai ve NHibernat, anh chi co the vui long chi cho em nguon tai lieu hoac cho em xin bai mau cua anh chi de tham khao duoc ko ah....
    Em chan thanh cam on anh chi.....
    Email: Songthan_ko@yahoo.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
3,866
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
244
Comments
3
Likes
1
Embeds 0
No embeds

No notes for slide

Nhibernate -Co ban

  1. 1. NHibernate<br />Sinhviênthựchiện:<br /><ul><li>07k1034_Huỳnh HồAnhĐức
  2. 2. 07k1094_Phạm ThịTúNhi
  3. 3. 07k1099_Vũ ĐỗHồngNhung</li></li></ul><li>
  4. 4. I. Môtả<br />
  5. 5. I. Môtả<br />KháiNiệm<br />LịchSử<br />Chứcnăng<br />
  6. 6. What’s Nhibernate?<br />?<br />
  7. 7. NHibernatelàmộtcảngcủaHibernate Corecho Java vào Framework. NETvàmộtsốứngdụngkhác.<br />Nókiêntrìxửlýcácđốitượngđồngbằng NET. ĐếnvàtừmộtCSDL quanhệcơbản. <br />Vớimộtmôtả XML củacácthựcthểvàmốiquanhệ.<br />NHibernatetựđộngtạo SQL chotảivàlưutrữcácđốitượng. <br />NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế.<br />
  8. 8. Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt<br />Điềunàylàmchonócóthểthiếtkế logic kinhdoanhbằngcáchsửdụngđồngbằng NET (. CLR) cácđốitượngvàthànhngữhướngđốitượng<br />NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế<br />Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt<br />Điềunàylàmchonócóthểthiếtkế logic kinhdoanhbằngcáchsửdụngđồngbằng NET (. CLR) cácđốitượngvàthànhngữhướngđốitượng. <br />
  9. 9. NHibernateđượcbắtđầubởi Tom Barrett, vàsauđóđượcchỉnhsửabởi Mike Doerflervà Peter Smulovics. <br />Vàocuốinăm 2005, JBoss , Inc (nay làmộtphầncủaRed Hat ) thuê Sergey Koshcheyev, sauđódẫndắtvàpháttriểnNHibernate, đểlàmviệctoànthờigiantrêncácphiênbảntươnglai<br />Vàocuốinăm 2006 JBossngừnghỗtrợđểdựánnày; ngày nay nóhoàntoànpháttriểnvà do cộngđồng. <br />
  10. 10. CÁC PHIÊN BẢN CỦA NHIBERNATE<br />Phiênbản 1.0 đượcnhânđôicáctínhnăngthiếtlậpcủa Hibernate 2.1, cũngnhưmộtsốtínhnăngtừ Hibernate 3. <br />. NHibernate 1.2.1, pháthànhvàothángmườimộtnăm 2007 , đượcgiớithiệuthêmnhiềutínhnăngtừ Hibernate 3 vàhỗtrợcho, NET. 2,0 stored procedures , generics, vàcácloạinullable. <br />NHibernate 2,0 đãđượcpháthànhngày 23 ThángTám 2008 Nóđược so sánhvới Hibernate 3.2 vềtínhnăng.Vớiphiênbản 2.0 pháthành, NHibernatebỏhỗtrợ 1.1. NET<br />NHibernate 2,1 đãđượcpháthành 17 tháng 7 năm 2009. <br />NHibernate 3,0 sẽlàphiênbảnđầutiênsửdụng NET 3.5.. <br />
  11. 11.
  12. 12. cáctínhnăngchính<br />TínhnăngchínhcủaNHibernatelàánhxạtừcácloại NET. lớphọc CSDL đểbàn (và CLR từdữliệuSQLcácloạidữliệu)<br />Natural programming model - Môhìnhlậptrìnhtựnhiên - NHibernatehỗtrợthànhngữ OO tựnhiên; thừakế, đahình, thànhphần, cácbộsưutập, baogồmcảcácbộsưutậpchung<br />Support for fine-grained object models .Hỗtrợchocácmôhìnhđốitượnghạttinh - mộtloạiphongphúcủacácánhxạchocácbộsưutậpvàphụthuộccácđốitượng<br />
  13. 13. cáctínhnăngchính<br />No build-time bytecode enhancement .Khôngcóthờigiantăngcườngbytecode-xâydựng - khôngcómãsốthếhệphụhoặccácbướcchếbiếnbytecodetrongthủtụcxâydựng<br />The query options -Cáctruyvấnlựachọn - NHibernateđịachỉcảhaimặtcủavấnđề; khôngchỉlàmthếnàođểcóđượccácđốitượngvào CSDL, màcònlàmthếnàođểcóđượchọtrởlại<br />Custom SQL - Custom SQL - xácđịnhchínhxácrằng SQL NHibernatenênsửdụngđểkéodàicácđốitượngcủabạn. Stored procedures are supported on Microsoft SQL Server. thủtụclưutrữđượchỗtrợtrên Microsoft SQL Server. <br />
  14. 14. cáctínhnăngchính<br />Support for "conversations“- Hỗtrợcho "cuộchộithoại" - NHibernatehỗtrợhoàncảnhsốngbềnbỉ, lâudài, tháo / lắplạicủacácđốitượng, vàsẽchămsóccủakhóatựđộnglạcquan<br />NHibernatecũngcungcấpdữliệutruyvấnvàcácphươngtiệncứu<br />NHibernatetạoracáclệnh SQL vàgiúpcácnhàpháttriểntừdữliệuhướngdẫnsửdụngbộxửlývàchuyểnđổiđốitượng, lưugiữcácứngdụngdiđộngchohầuhếtcác CSDL SQL, với Portability CSDL trênkhôngthựchiệngiaotạirấtít<br />Free/open source - Miễnphí / mãnguồnmở - NHibernateđượccấpphéptheo LGPL (Lesser GNU Public License) <br />
  15. 15. II. HoạtĐộng<br />
  16. 16. TìmhiểuNhibernate<br />
  17. 17. 1. CàiĐặtNhibernate<br />Tảixuốngcáctập tin NHibernate-2.1.2.GA-bin<br />tạoramộtthưmụccótênNhibernate-Demo ngoàiDesktop (C:UsersAnhDucDesktopNhibernate-Demo )vàgiảinéntập tin vừatải<br />
  18. 18. TẠO DỰ ÁN<br /><ul><li>Đểbắtđầuxâydựng 1 dựánmới .Bạnthựchiệncácbướcsau</li></ul>Bước 1: Tao ra 1 Folder con tên “UngDungNhibernate”(tênnày do bạnđặtdùngđểchứatấtcả Project củabạn<br />Bước 2: Mở VS 2005 (cácphiênbảnmớinhấtcủa VS) tạo 1 Solution co tên “Nhibernate-Solution”<br />Bước 3: Add 1 ClassLibraryđặttên “ThuVienNhibernate” Lớpthưviệnnày<br />Bước 4: Create 1 Folder co tên “UngDung-Nhiberbate” đểchứaỨngdụngcủabạn<br />Sauđâylà Demo tạovàCàiđặtNhbernate<br />
  19. 19. Demo tạovàCàiđặtNhibernate<br />
  20. 20.
  21. 21. tạovàCàiđặtNhibernate<br />
  22. 22. B1 :Tao 1 Folder ở nơibạnthích(desktop)<br />
  23. 23. B2:Tải NHibernate-2.1.2.GA-bin.zip (Google.com) lưuvàothưmụcvừatạogiảinénnó<br />
  24. 24. B3:Mở VS(phiểnbảnnàocũngđược) tạo 1 solution đặttênnàobạnthích(demoNhibernate)lưunóvào folder bạntạo<br />
  25. 25. B4: tạoClassLibrary (thuvienNhibernate)<br />
  26. 26. B5.tạo Application (ApliNhibernate) lưuvào Folder mới (Apli) rồilưu folder nàyvào Solution củabạn<br />
  27. 27. Giaodiệncủa Solution củabạnsẽnhưthếnày<br />
  28. 28. 2. Xácđịnhđốitượngkinhdoanh<br /><ul><li>Cho phépbắtđầubằngcáchxácđịnhmộtmiềnrấtđơngiản:
  29. 29. Tạo 1 Folder cótên DTO thuộclớpthưviệnthuvienNhibernate(lớpthưviệntạotrướcđó)
  30. 30. Tạo 2 file nhưhìnhdưới</li></li></ul><li>LớpđầutiênđặttênSinhVien.cs: cókhaibáonhưsau :<br />
  31. 31. namespace thuvienNhibernate.DTO<br />{<br /> public class SinhVien<br /> {<br /> private int _Mssv, MaLop,;<br /> private string _HoTen,;<br /> private string _GioiTinh;<br /> private string _DiaChi; <br /> public intMssv<br /> {<br /> get { return _Mssv; } <br /> set { _Mssv = value; }<br /> }<br /> public string HoTen<br /> {<br /> get { return _HoTen; } <br /> set { _HoTen = value; }<br /> }<br />public string GioiTinh<br />{<br />get { return _GioiTinh; } <br />set { _GioiTinh = value; }<br />}<br />public string DiaChi<br />{<br />get { return _DiaChi; } <br />set { _DiaChi = value; }<br />}<br />public int MaLop1<br />{<br />get { return MaLop; } <br />set { MaLop = value; }<br />}<br /> }<br />} <br />
  32. 32. 3. XácđịnhBảnĐồ<br />Đểcóthểtồntạitrườnghợpcủathựcthểnàytrongmột CSDL<br />NHibernate (Mộtthểhiệncủamộtthựcthểtrongmiềntươngứngvớimộthàngtrongmộtbảngtrong CSDL)<br />xácđịnhmộtánhxạgiữacácthựcthểvàbảngtươngứngtrong CSDL<br />Lậpbảnđồnàycóthểđượcthựchiệnbằngcáchxácđịnhmộttập Mapping (DTO) hoặcbằngcáchtrangtrícácthựcthểcóthuộctính<br />
  33. 33. Properties thêm schema đếntập tinSinhVien.Bhm.xml<br />
  34. 34. <?xml version="1.0" encoding="utf-8" ?><br /><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2“<br /> namespace="thuvienNhibernate“<br /> assembly="thuvienNhibernate"><br /><class name="SinhVien" table="SinhVien" lazy="false"><br /><id name="Mssv" column="Mssv" unsaved-value="0"><br /><generator class="native"/> </id><br /><property name="HoTen"> <column name="HoTen" not-null="true"/></property><br /><property name="GioiTinh"> <column name="GioiTinh" not-null="true"/> </property><br /><property name="DiaChi"> <column name="DiaChi" not-null="true"/> </property><br /><property name="MaLop"> <column name="MaLop" not-null="true"/> </property><br /></class><br /></hibernate-mapping><br />
  35. 35. <ul><li>Tươngtựtạotiếplớpthứ 2 :Lop.csvàcấuhìnhgiốnglớpSinhVien.cs</li></li></ul><li><ul><li>Trongmộttập tin bảnđồkhilớpthamchiếuđếnmộttênmiềnmàbạnluônphảicungcấptênđầyđủcủalớp
  36. 36. Đểthựchiệncác xml cóthểđịnhnghĩatênlắpráp (trongđócáclớpmiềnđượcthựchiệnvàkhônggiantêncủalớphọcmiềntrongcácthuộcassembly and namespacecủanútgốc.
  37. 37. Tươngtựnhưbáocáosửdụngtrong C # lầnđầutiênxácđịnhmộtkhóachínhchocácđơnvịsảnphẩm
  38. 38. Vềmặtkỹthuật : cóthểlấytêntàisảncủasảnphẩmkểtừkhitàisảnnàyphảiđượcxácđịnhvàphảiđượcduynhất</li></li></ul><li>4. Cấu HÌNH nhIBERNATE<br />NHibernatesởdữliệusảnphẩmmàmuốnsửdụngvàcungcấpchokếtnốicác chi tiếttronghìnhthứccủamộtchuỗikếtnối<br />NHibernatehỗtrợcácsảnphẩm CSDL nhiều<br />Thêmmột file xml mớichodựánthuvienNhibernatevàgọilàhibernate.cfg.xml<br /> Set its property " Copy to Output " to " Copy always "<br />
  39. 39. Cấuhìnhnhưsau :<br /><?xml version="1.0" encoding="utf-8" ?><br /><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><br /><session-factory><br /><property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><br /><property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property><br /><property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property><br /><property name="connection.connection_string">Data Source=C:UsersAnhDucDesktopNHibernate_1SinhVienNhibernate huvienNhibernateQLSinhVien.sdf;Max Database Size=2047</property><br /><property name="show_sql">True</property><br /></session-factory><br /></hibernate-configuration><br />
  40. 40. 5. Cấu HÌNH nhIBERNATE<br />Thêmmột CSDL trốngrỗng, gọilàQLSinhVien.sdfchodựánthuvienNhibernate(chọnCSDLđịaphươngnhưbảnmẫu) <br />
  41. 41. KiỂM TRA CÁC THIẾT LẬP<br /><ul><li>Đầutiênxác minh cónhững file sautrongthưmục.</li></ul>Nhibernatetạo ở đầu file<br />
  42. 42. Lưu ý: cácSystem.Data.SqlServerCe.dllnằm ở thưmục Desktop-sub<br />Tấtcảcáctập tin kháccóthểtìmthấytrongthưmụcNHibernate<br />
  43. 43. ThêmmộtthamchiếuđếncácdựánthuvienNhibernatetrongdựánthửnghiệm<br />Thêmmộtbảnsaocủahibernate.cfg.xmlvàothưmụcgốccủadựánnàykiểmtrađơnvị. TrựctiếphànhđộngvớiNHibernatetrongdựánNUnitnhucầutruycậpvàocác file này<br />
  44. 44. Ngoàirathêmtàiliệuthamkhảođể NHibernate.dll, nunit.framework.dllvàSystm.Data.SqlServerCe.dll<br />
  45. 45. Copy tấtcảcác file “*. dll” nằmtrongNHibernate-2.1.2.GA-bin chovaophan Debug củaỨngDụng<br />
  46. 46. Ta có Code :<br />using System;<br />Using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using thuvienNhibernate.DTO;<br />using thuvienNhibernate;<br />using System.Configuration;<br />namespace thuvienNhibernate.DAO<br />{<br /> public class SessionFactorys<br /> {<br /> private static NHibernate.ISessionFactory _SessionFactory;<br /> private static void Init()<br /> {<br />NHibernate.Cfg.Configurationconfig = new NHibernate.Cfg.Configuration();<br />config.Configure();<br />config.AddAssembly("thuvienNhibernate");<br /> _SessionFactory = config.BuildSessionFactory();<br /> }<br />
  47. 47. public static NHibernate.ISessionFactoryGetSessionFactory()<br /> {<br /> if (_SessionFactory == null)<br /> {<br /> Init();<br /> }<br /> return _SessionFactory;<br /> }<br /> public static NHibernate.ISessionGetnewSession()<br /> {<br /> return GetSessionFactory().OpenSession();<br /> }<br /> }<br />}<br />
  48. 48. THIẾT LẬP TRUY VẤN ĐẾN CSDL<br />Tạo class SinhVienTruyvan.cs .VớilớpnàytạocáchàmIsert ,Delete,Update,Load CSDL<br />
  49. 49. SELECT<br /> public static DataTableGetTable()<br />{<br />DataTabledt = new DataTable();<br />OleDbConnectioncn;<br />cn = DataProvider.ConnectionData();<br /> string strSQL;<br />strSQL = "Select * From Sach";<br />OleDbDataAdapterda;<br />da = new OleDbDataAdapter(strSQL, cn);<br />da.Fill(dt);<br />cn.Close();<br /> return dt;<br />}<br />
  50. 50. Examining INSERTs with NHibernate<br />
  51. 51. INSERT<br /> public static void Add(SinhViensv)<br />{ <br />ISession session = NHibernateHelper.GetCurrentSession();<br />ITransaction transaction = session.BeginTransaction();<br />session.Save(sv);<br />session.Flush();<br />transaction.Commit();<br />NHibernateHelper.CloseSession();<br />}<br />
  52. 52. Examining DELETEs with NHibernate<br />
  53. 53. DELETE<br /> public static void Add(SinhViensv)<br />{ <br />ISession session = NHibernateHelper.GetCurrentSession();<br />ITransaction transaction = session.BeginTransaction();<br />session.Delete(sv);<br />session.Flush();<br />transaction.Commit();<br />NHibernateHelper.CloseSession();<br />}<br />
  54. 54. Examining UPDATEs with NHibernate<br />
  55. 55. UPDATE<br /> public static void Add(SinhViensv)<br />{ <br />ISession session = NHibernateHelper.GetCurrentSession();<br />ITransaction transaction = session.BeginTransaction();<br />session.Update(sv);<br />session.Flush();<br />transaction.Commit();<br />NHibernateHelper.CloseSession();<br />}<br />
  56. 56. INDENTIFYING ANNOYANCES IN THESE USAGE PATTERN<br /><ul><li>Allows call like session.SaveOrUpdate(sv);
  57. 57. Nhibernate will …</li></ul>Check if the object is in the sesion<br />If its not there,call Implicit Save(sv);<br />If its there ,check to see it the object is “dirty”(changed)<br />If its dirty,call implicit Update(sv);<br /><ul><li>SaveOrUpdate() relieves us of having to keep track of “dirty” state ourselves</li></li></ul><li>6. CRUD hoạtđộng<br />Hệthốngđãsẵnsàngđểbắtđầu. Đãthựchiệnthànhcôngtênmiền, quyđịnhcáctập tin Mapping vàNHibernateConfig. CuốicùngđãsửdụngNHibernateđểtựđộngtạoracáclượcđồ CSDL từtênmiền(vàcáctập tin lậpbảnđồ)<br />Giaodiệnrepositorylàmộtphầncủatênmiền<br />
  58. 58. Thêmmộtthưmục BUS thuộcdựánSinhVienNHibernate.<br />Thêmmộtgiaodiện class cótênSinhVienBUS. Xácđịnhcácgiaodiệnsau :<br />using System; <br />using System.Collections.Generic; <br />namespace ThuVienNHibernate.BUS<br /> { (<br /> public class SinhVienTruyvanBUS<br /> { ( <br /> public static void AddSv(SinhViensv);<br /> public static void RemoveSv(SinhViensv);<br /> public static void UpdateSv(SinhViensv); <br /> } ) <br /> } ) <br />
  59. 59. Dòng_SessionFactory = config.BuildSessionFactory()<br />Đâylàmộtquátrìnhtốnkémvà do đónênđượcthựchiệnchỉmộtlần. Đólàlý do tạisaođặtnóvàophươngphápnàylàchỉthựchiệnmộtlầntrongmộtchukỳkiểmtra<br />Đểgiữhiệulựcthửnghiệmcácphươngpháp, lạitạora CSDL schema trướckhithựchiệnmỗiphươngphápthửnghiệm. <br />
  60. 60. ĐólàbởivìNHibernatelàtheomặcđịnhcấuhìnhđểsửdụngtải lazychotấtcảcácthựcthể. Đólàcáchtiếpcậnđềnghịvàtôikhuyênbạnnênnồngnhiệtkhôngphảiđểthayđổinóchotốiđalàtínhlinhhoạt<br />
  61. 61. BâygiờđãsẵnsàngđểthựchiệncácphươngphápkháccũngcủaRepository<br />Đốivớithửnghiệmnày, thayvìsẽcómộtkholưutrữ (cónghĩalà CSDL bảng) đãcóchứamộtsốsảnphẩm. ChỉcầnthêmmộtphươngphápđểCreateInitialDatalớpkiểmtra<br />
  62. 62. Cảmơnmọingườiđãquantâmtheodõi!!!<br />Chúcthànhcông!!!<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×