1 / 59

S inh viên thực hiện : 07k1034_Huỳnh Hồ Anh Đức 07k1094_Phạm Thị Tú Nhi

NHibernate. S inh viên thực hiện : 07k1034_Huỳnh Hồ Anh Đức 07k1094_Phạm Thị Tú Nhi 07k1099_Vũ Đỗ Hồng Nhung. I. Mô tả. I. Mô tả. Khái Niệm Lịch Sử Chức năng. What’s Nhibernate ?. ?.

avidan
Télécharger la présentation

S inh viên thực hiện : 07k1034_Huỳnh Hồ Anh Đức 07k1094_Phạm Thị Tú Nhi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NHibernate Sinhviênthựchiện: 07k1034_Huỳnh HồAnhĐức 07k1094_Phạm ThịTúNhi 07k1099_Vũ ĐỗHồngNhung

  2. I. Môtả

  3. I. Môtả • KháiNiệm • LịchSử • Chứcnăng

  4. What’s Nhibernate? ?

  5. NHibernatelàmộtcảngcủaHibernate Corecho Java vào Framework. NETvàmộtsốứngdụngkhác. Nókiêntrìxửlýcácđốitượngđồngbằng NET. ĐếnvàtừmộtCSDL quanhệcơbản. Vớimộtmôtả XML củacácthựcthểvàmốiquanhệ. NHibernatetựđộngtạo SQL chotảivàlưutrữcácđốitượng. NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế.

  6. Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt Đ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 NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt Đ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.

  7. NHibernateđượcbắtđầubởi Tom Barrett, vàsauđóđượcchỉnhsửabởi Mike Doerflervà Peter Smulovics. • 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 • Vàocuốinăm 2006 JBossngừnghỗtrợđểdựánnày; ngày nay nóhoàntoànpháttriểnvà do cộngđồng.

  8. CÁC PHIÊN BẢN CỦA NHIBERNATE • 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. • . 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. • 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 • NHibernate 2,1 đãđượcpháthành 17 tháng 7 năm 2009. • NHibernate 3,0 sẽlàphiênbảnđầutiênsửdụng NET 3.5..

  9. cáctínhnăngchính • 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) • 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 • 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

  10. cáctínhnăngchính • 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 • 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 • 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.

  11. cáctínhnăngchính • 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 • NHibernatecũngcungcấpdữliệutruyvấnvàcácphươngtiệncứu • 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 • Free/open source - Miễnphí / mãnguồnmở - NHibernateđượccấpphéptheo LGPL (Lesser GNU Public License)

  12. II. HoạtĐộng

  13. TìmhiểuNhibernate

  14. 1. CàiĐặtNhibernate • Tảixuốngcáctập tin NHibernate-2.1.2.GA-bin • tạoramộtthưmụccótênNhibernate-Demo ngoàiDesktop (C:\Users\AnhDuc\Desktop\Nhibernate-Demo )vàgiảinéntập tin vừatải

  15. TẠO DỰ ÁN • Đểbắtđầuxâydựng 1 dựánmới .Bạnthựchiệncácbướcsau 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 Bước 2: Mở VS 2005 (cácphiênbảnmớinhấtcủa VS) tạo 1 Solution co tên “Nhibernate-Solution” Bước 3: Add 1 ClassLibraryđặttên “ThuVienNhibernate” Lớpthưviệnnày Bước 4: Create 1 Folder co tên “UngDung-Nhiberbate” đểchứaỨngdụngcủabạn Sauđâylà Demo tạovàCàiđặtNhbernate

  16. Demo tạovàCàiđặtNhibernate

  17. tạovàCàiđặtNhibernate

  18. B1 :Tao 1 Folder ở nơibạnthích(desktop)

  19. B2:Tải NHibernate-2.1.2.GA-bin.zip (Google.com) lưuvàothưmụcvừatạogiảinénnó

  20. 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

  21. B4: tạoClassLibrary (thuvienNhibernate)

  22. B5.tạo Application (ApliNhibernate) lưuvào Folder mới (Apli) rồilưu folder nàyvào Solution củabạn

  23. Giaodiệncủa Solution củabạnsẽnhưthếnày

  24. 2. Xácđịnhđốitượngkinhdoanh • 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

  25. LớpđầutiênđặttênSinhVien.cs: cókhaibáonhưsau :

  26. public string GioiTinh { get { return _GioiTinh; } set { _GioiTinh = value; } } public string DiaChi { get { return _DiaChi; } set { _DiaChi = value; } } public int MaLop1 { get { return MaLop; } set { MaLop = value; } } } } namespace thuvienNhibernate.DTO { public class SinhVien { private int _Mssv, MaLop,; private string _HoTen,; private string _GioiTinh; private string _DiaChi; public intMssv { get { return _Mssv; } set { _Mssv = value; } } public string HoTen { get { return _HoTen; } set { _HoTen = value; } }

  27. 3. XácđịnhBảnĐồ Đểcóthểtồntạitrườnghợpcủathựcthểnàytrongmột CSDL NHibernate (Mộtthểhiệncủamộtthựcthểtrongmiềntươngứngvớimộthàngtrongmộtbảngtrong CSDL) xácđịnhmộtánhxạgiữacácthựcthểvàbảngtươngứngtrong CSDL 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

  28. Properties thêm schema đếntập tinSinhVien.Bhm.xml

  29. <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2“ namespace="thuvienNhibernate“ assembly="thuvienNhibernate"> <class name="SinhVien" table="SinhVien" lazy="false"> <id name="Mssv" column="Mssv" unsaved-value="0"> <generator class="native"/> </id> <property name="HoTen"> <column name="HoTen" not-null="true"/></property> <property name="GioiTinh"> <column name="GioiTinh" not-null="true"/> </property> <property name="DiaChi"> <column name="DiaChi" not-null="true"/> </property> <property name="MaLop"> <column name="MaLop" not-null="true"/> </property> </class> </hibernate-mapping>

  30. Tươngtựtạotiếplớpthứ 2 :Lop.csvàcấuhìnhgiốnglớpSinhVien.cs

  31. Trongmộttập tin bảnđồkhilớpthamchiếuđếnmộttênmiềnmàbạnluônphảicungcấptênđầyđủcủalớp • Để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. • 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

  32. 4. Cấu HÌNH nhIBERNATE 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 NHibernatehỗtrợcácsảnphẩm CSDL nhiều Thêmmột file xml mớichodựánthuvienNhibernatevàgọilàhibernate.cfg.xml Set its property " Copy to Output " to " Copy always "

  33. Cấuhìnhnhưsau : <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property> <property name="connection.connection_string">Data Source=C:\Users\AnhDuc\Desktop\NHibernate_1\SinhVienNhibernate\thuvienNhibernate\QLSinhVien.sdf;Max Database Size=2047</property> <property name="show_sql">True</property> </session-factory> </hibernate-configuration>

  34. 5. Cấu HÌNH nhIBERNATE Thêmmột CSDL trốngrỗng, gọilàQLSinhVien.sdfchodựánthuvienNhibernate(chọnCSDLđịaphươngnhưbảnmẫu)

  35. KiỂM TRA CÁC THIẾT LẬP • Đầutiênxác minh cónhững file sautrongthưmục. Nhibernatetạo ở đầu file

  36. Lưu ý: cácSystem.Data.SqlServerCe.dllnằm ở thưmục Desktop-sub Tấtcảcáctập tin kháccóthểtìmthấytrongthưmụcNHibernate

  37. ThêmmộtthamchiếuđếncácdựánthuvienNhibernatetrongdựánthửnghiệmThêmmộtthamchiếuđếncácdựánthuvienNhibernatetrongdựánthửnghiệm • 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

  38. Ngoàirathêmtàiliệuthamkhảođể NHibernate.dll, nunit.framework.dllvàSystm.Data.SqlServerCe.dll

  39. Copy tấtcảcác file “*. dll” nằmtrongNHibernate-2.1.2.GA-bin chovaophan Debug củaỨngDụng

  40. Ta có Code : using System; Using System.Collections.Generic; using System.Linq; using System.Text; using thuvienNhibernate.DTO; using thuvienNhibernate; using System.Configuration; namespace thuvienNhibernate.DAO { public class SessionFactorys { private static NHibernate.ISessionFactory _SessionFactory; private static void Init() { NHibernate.Cfg.Configurationconfig = new NHibernate.Cfg.Configuration(); config.Configure(); config.AddAssembly("thuvienNhibernate"); _SessionFactory = config.BuildSessionFactory(); }

  41. public static NHibernate.ISessionFactoryGetSessionFactory() { if (_SessionFactory == null) { Init(); } return _SessionFactory; } public static NHibernate.ISessionGetnewSession() { return GetSessionFactory().OpenSession(); } } }

  42. THIẾT LẬP TRUY VẤN ĐẾN CSDL • Tạo class SinhVienTruyvan.cs .VớilớpnàytạocáchàmIsert ,Delete,Update,Load CSDL

  43. SELECT public static DataTableGetTable() { DataTabledt = new DataTable(); OleDbConnectioncn; cn = DataProvider.ConnectionData(); string strSQL; strSQL = "Select * From Sach"; OleDbDataAdapterda; da = new OleDbDataAdapter(strSQL, cn); da.Fill(dt); cn.Close(); return dt; }

  44. Examining INSERTs with NHibernate

  45. INSERT public static void Add(SinhViensv) { ISession session = NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Save(sv); session.Flush(); transaction.Commit(); NHibernateHelper.CloseSession(); }

  46. Examining DELETEs with NHibernate

  47. DELETE public static void Add(SinhViensv) { ISession session = NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Delete(sv); session.Flush(); transaction.Commit(); NHibernateHelper.CloseSession(); }

More Related