LINQ N-HIBERNATE NET-TIER Nhóm D GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
Giới thiệu về ORM <ul><li>O bject –  R elational  M apping (ORM, O/RM, O/R mapping) </li></ul><ul><li>Là một kỹ thuật lập ...
LINQ Nhóm D1 + D2 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
Thành viên nhóm <ul><li>Nhóm D 1 : </li></ul><ul><li>Phạm Ngọc Phú  – 061 2352 </li></ul><ul><li>Phan Vũ Liêm  – 0612 207 ...
Nội dung chính Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
LINQ Giới thiệu về LINQ 1
Giới thiệu về LINQ <ul><li>LINQ (Language Integrated Query) – Ngôn ngữ truy vấn tích hợp - Ngôn ngữ thống nhất cách thức t...
Giới thiệu về LINQ <ul><li>LINQ được phân thành 3 loại: </li></ul><ul><ul><li>LINQ to Objects </li></ul></ul><ul><ul><li>L...
LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
LINQ Lợi ích sử dụng LINQ 2
Lợi ích sử dụng LINQ <ul><li>Nó cung cấp một cách chung để truy xuất dữ liệu từ bất kỳ nguồn nào với cùng một cú pháp. </l...
LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
LINQ Ưu, khuyết điểm của LINQ 3
Ưu, khuyết điểm của LINQ <ul><li>Ưu điểm: </li></ul><ul><li>Lập trình với cơ sở dữ liệu một cách dễ dàng. </li></ul><ul><l...
LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo LINQ to SQL 4 1 2 3
LINQ Hình ảnh Demo LINQ to SQL 4
Thêm CSDL vào Project
Thêm CSDL vào Project
Thêm CSDL vào Project
Thêm lớp LINQ to SQL
Thêm lớp LINQ to SQL
Thêm lớp LINQ to SQL
Thêm lớp LINQ to SQL
Thêm lớp LINQ to SQL
Cấu trúc quản lý của LINQ to SQL
Thêm, xóa, sửa dữ liệu
Load dữ liệu lên Form <ul><li>Load tất cả thông tin các loại sách ở bảng LoaiSach trong cơ sở dữ liệu lên form. </li></ul>
Thêm dữ liệu <ul><li>Thêm một loại sách mới vào bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
Cập nhật dữ liệu <ul><li>Cập nhật thông tin loại sách vào bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
Xóa dữ liệu <ul><li>Xóa một loại sách ra khỏi bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
Truy vấn trên một bảng <ul><li>Tra cứu thông tin loại sách theo mã loại sách. </li></ul>
Truy vấn trên nhiều bảng <ul><li>Lấy thông tin tên sách, tên loại sách, tác giả, tên nhà xuất bản của tất cả các sách. </l...
Sử dụng distinct <ul><li>Lấy tất cả tên loại sách trong bảng LoaiSach. Mỗi tên chỉ xuất hiện 1 lần. </li></ul>
Sử dụng Order By <ul><li>Sắp xếp tên các loại sách trong bảng LoaiSach theo thứ tự tăng dần. </li></ul>
Sử dụng Group By <ul><li>Ứng với mã loại sách là 1, đếm số lượng sách theo tên sách. </li></ul>
Sử dụng join <ul><li>Lấy thông tin tên sách, tên loại sách, tác giả của tất cả các sách. </li></ul>
Tham khảo <ul><li>LINQ for Visual C Sharp 2008 Jun 2008 – Fabio Claudio Ferracchiati </li></ul><ul><li>Professional LINQ -...
NHibernate Nhóm D3 + D5 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
Thành viên nhóm <ul><li>Nhóm D3: </li></ul><ul><li>Ngô Minh Nhựt – 0612322  </li></ul><ul><li>Võ Quang Nhật – 0612318  </l...
Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
Giới thiệu <ul><li>Hibernate: là Framework mở nguồn mở hỗ trợ truy xuất CSDL cho các ứng dụng hướng đối tượng sử dụng CSDL...
<ul><li>NHibernate trong mô hình 3 lớp: </li></ul>Giới thiệu
Giới thiệu <ul><li>NHiberate có nhiệm vụ chuyển đổi dữ liệu giữa ứng dụng và CSDL:  </li></ul><ul><ul><li>Đọc  </li></ul><...
Giới thiệu <ul><li>Lịch sử: </li></ul><ul><li>Được bắt đầu bởi: Tom Barrett </li></ul><ul><li>2005, JBoss, Inc. (thuộc Red...
Giới thiệu <ul><li>Lịch sử: các phiên bản </li></ul><ul><li>NHibernate 1.2.1: 11/2007, hỗ trợ .NET 2.0 </li></ul><ul><li>N...
Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Cài đặt <ul><li>Download NHibernate tại:   www.hibernate.com/6.html </li></ul><ul><li>Chép thư mục chứa DLL vào thư mục ch...
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Tạo Project, add reference  <ul><li>Tạo Project, Add reference, Browse đến thư mục chứa các DLL của NHibernate </li></ul>
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Tạo CSDL và các lớp đối tượng <ul><li>Tạo CSDL quan hệ </li></ul>
Tạo CSDL và các lớp đối tượng <ul><li>Tạo các lớp đối tượng tương ứng với các bảng của CSDL </li></ul>
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Tạo các tập tin cấu hình <ul><li>Tạo tập tin cấu hình  hibernate.cfg.xml </li></ul><ul><li>Giúp cho NHibernate biết cần ph...
Tạo các tập tin cấu hình <ul><li>Tạo tập tin cấu hình  hibernate.cfg.xml </li></ul><ul><li><property name=&quot; connectio...
Tạo các tập tin cấu hình <ul><li>Tạo các tập tin ánh xạ  *.hbm.xml </li></ul><ul><li>Mỗi lớp có một tập tin ánh xạ tương ứ...
Tạo các tập tin cấu hình <ul><li>Tạo các tập tin ánh xạ  *.hbm.xml </li></ul><class name=&quot; DTO.SachDto,DTO &quot; tab...
Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối ...
Truy xuất dữ liệu <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các ...
<ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL ...
Ánh xạ lớp đối tượng và CSDL Load file cấu hình và file ánh xạ, thực hiện ánh xạ và trả về đối tượng ISessionFactory.
<ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL ...
Kết nối CSDL Đối tượng session giữ kết nối với CSDL và thực hiện các thao tác đọc ghi trên CSDL
<ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL ...
Thực hiện các thao tác với CSDL
Thực hiện các thao tác với CSDL – select  IList  lst = session. Find ( “from DTO.DocGiaDto” ); // Đọc tất cả các record tr...
Thực hiện các thao tác với CSDL – insert DocGiaDto  dg = new  DocGiaDto (); dg.HoTen = “ NMN ”; dg.GioiTinh = 1; // … sess...
Thực hiện các thao tác với CSDL – delete  DocGiaDto  dg = session. Load < DocGiaDto >(maDg); session. Delete (dg); // Xóa ...
Thực hiện các thao tác với CSDL – update  DocGiaDto  dg = session. Load < DocGiaDto >(maDg); dg.HoTen = “Cập nhật”; sessio...
Thực hiện các thao tác với CSDL – SqlQuery <ul><li>String  strSql = “ select s.TenSach, ls.TenLoaiSach, s.TacGia from Sach...
Thực hiện các thao tác với CSDL – SqlQuery <ul><li>String  strSql = “ select * from DocGia where HoTen = ? ” </li></ul><ul...
Thực hiện các thao tác với CSDL transaction. Commit (); Cập nhật các thay đổi xuống CSDL transaction. Rollback (); Hủy bỏ ...
<ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL ...
Đóng kết nối với CSDL
Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
Ưu, khuyết điểm <ul><li>Ưu điểm </li></ul><ul><li>Hỗ trợ nhiều loại cơ sở dữ liệu (multi – database support) </li></ul><ul...
Ưu, khuyết điểm <ul><li>Khuyết điểm: </li></ul><ul><li>Người dùng NHibernate phải học cách viết tập tin mapping. </li></ul...
Tham khảo <ul><li>http://www.hibernate.com </li></ul><ul><li>http://en.wikipedia.org/wiki/NHibernate </li></ul><ul><li>htt...
NET – TIER Nhóm D4 + D6 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
Thành viên nhóm <ul><li>Nhóm D 4 : </li></ul><ul><li>Nguyễn Hải Đăng - 0512438 </li></ul><ul><li>Đào Duy Minh Đăng – 05124...
Nội dung chính Giới thiệu công cụ CodeSmith Giới thiệu netTiers Demo netTiers 3 1 2
CÔNG CỤ CODESMITH <ul><li>Giới thiệu </li></ul><ul><li>Công cụ phát sinh mã dựa trên template có sẵn. </li></ul><ul><li>Hỗ...
CÔNG CỤ CODESMITH <ul><li>Template là gì? </li></ul><ul><li>Là một khung mẫu do người dùng định nghĩa theo ngôn ngữ của Co...
CÔNG CỤ CODESMITH STUDIO <ul><li>Công cụ CodeSmith Studio </li></ul><ul><li>Giúp soạn thảo, biên dịch và thực thi một temp...
Menu bar Tool bar Cửa sổ chính Templete Explorer Tab Templetet Tab Output
CÔNG CỤ CODESMITH EXPLORER <ul><li>Công cụ CodeSmith Explorer </li></ul><ul><li>Giúp phát sinh mã từ một template. </li></...
CÔNG CỤ CODESMITH EXPLORER
NETTIERS <ul><li>Giới thiệu </li></ul><ul><li>Là một tập các template (nguồn mở) dùng để phát sinh mã. Giúp đơn giản hóa v...
NETTIERS Kiến  trúc .netTiers
Demo Bước 1: Khởi động CODESMITH EXPLORER, mở template nettiers. Bước 2: Nhập các thông tin của dự án. Bước 3: genarate co...
Company Name
 
Demo Add >> New item >> Application Configuration File Copy nội dung từ file: NetTiers*.UnitTests *.UnitTests.dll.config B...
Bước 5: Thiết kế giao diện
AccountService accountsService = new AccountsService();  //GetAll()  TList<Accounts> accountList = accountsService.GetAll(...
 
 
//Insert()  Account accountEntity = new Account();  accountEntity.AccountName = &quot;MyAccountName&quot;; accountEntity.C...
//Delete()  bool  result = accountsService.Delete(23);  DangKyService  dkSer =  new   DangKyService (); dkSer.Delete(m.Isb...
//Update()  accountEntity.AccountName = &quot;MyAccountName 2&quot;; accountsService.Update(accountEntity);  CuonSachServi...
Vấn đề select từ nhiều bảng dữ liệu Danh sách các độc giả đang đăng ký mượn sách, hiển thị các thông tin: họ tên độc giả, ...
 
Tham Khảo http://patternshare.org/default.aspx/Home.PP.Singleton http://www.dofactory.com/Patterns/PatternDecorator.aspx h...
So sánh <ul><li>Giống nhau: </li></ul><ul><li>Đều có cơ chế ORM </li></ul><ul><li>Khác nhau: </li></ul><ul><li>LINQ  không...
So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ  chủ yếu là ngôn ngữ truy vấn hỗ trợ intellisense, trình biên dịch sẽ ch...
So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ  chủ yếu dùng cho Microsoft SQL Server. </li></ul><ul><li>Nhibernate  có...
So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ  Closed source. </li></ul><ul><li>Nhibernate  Open source. </li></ul><ul...
 
Upcoming SlideShare
Loading in …5
×

Linq n hibernate net-tier

3,563 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,563
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
254
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Các thông tin về ánh xạ giữa các lớp đối tượng và CSDL được lưu trong ISessionFactory Configuration config = new Configuration (); config. Configure() ; Assembly currAssem = Assembly . GetExecutingAssembly() ; config.AddAssembly(currAssem); ISessionFactory sessionFactory = config. BuildSessionFactory() ; Load file cấu hình và file ánh xạ, thực hiện ánh xạ và trả về đối tượng ISessionFactory
  • ISession session = sessionFactory.OpenSession();
  • Xây dựng phần mềm thi trắc nghiệm_Nhóm B
  • Linq n hibernate net-tier

    1. 1. LINQ N-HIBERNATE NET-TIER Nhóm D GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
    2. 2. Giới thiệu về ORM <ul><li>O bject – R elational M apping (ORM, O/RM, O/R mapping) </li></ul><ul><li>Là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa các hệ thống không tương thích trong cơ sở dữ liệu quan hệ và các ngôn ngữ lập trình hướng đối tượng. </li></ul>
    3. 3. LINQ Nhóm D1 + D2 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
    4. 4. Thành viên nhóm <ul><li>Nhóm D 1 : </li></ul><ul><li>Phạm Ngọc Phú – 061 2352 </li></ul><ul><li>Phan Vũ Liêm – 0612 207 </li></ul><ul><li>Thái Ngân Phụng – 0612 358 </li></ul><ul><li>Nguyễn Thành Luân – 0612 234 </li></ul><ul><li>Lữ Thị Mỹ Phương – 0612339 </li></ul><ul><li>Nhóm D 2 : </li></ul><ul><li>Lê Thành Dũng – 0 512103 </li></ul><ul><li>Hứa Chí Châu – 0512080 </li></ul><ul><li>Bùi Việt Dũng – 0512101 </li></ul><ul><li>Trương Hữ Giang – 05121 10 </li></ul><ul><li>Nguyễn Phước Hiền – 0512 113 </li></ul>
    5. 5. Nội dung chính Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
    6. 6. LINQ Giới thiệu về LINQ 1
    7. 7. Giới thiệu về LINQ <ul><li>LINQ (Language Integrated Query) – Ngôn ngữ truy vấn tích hợp - Ngôn ngữ thống nhất cách thức truy xuất dữ liệu trong .NET. </li></ul><ul><li>Được phát triển từ năm 2003, và được công bố tại Hội nghị Microsoft Professional Developers vào 2005 do Anders Hejlsberg và nhóm của ông đã trình bày. </li></ul><ul><li>Được tích hợp sẵn trong Visual Studio 2008 (.NET 3.5). </li></ul>
    8. 8. Giới thiệu về LINQ <ul><li>LINQ được phân thành 3 loại: </li></ul><ul><ul><li>LINQ to Objects </li></ul></ul><ul><ul><li>LINQ to XML </li></ul></ul><ul><ul><li>LINQ to SQL </li></ul></ul>
    9. 9. LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
    10. 10. LINQ Lợi ích sử dụng LINQ 2
    11. 11. Lợi ích sử dụng LINQ <ul><li>Nó cung cấp một cách chung để truy xuất dữ liệu từ bất kỳ nguồn nào với cùng một cú pháp. </li></ul><ul><li>Giúp thực hiện truy vấn một cách dễ dàng hơn. </li></ul><ul><li>Được tích hợp như cú pháp của ngôn ngữ lập trình. </li></ul>
    12. 12. LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo 4 1 2 3
    13. 13. LINQ Ưu, khuyết điểm của LINQ 3
    14. 14. Ưu, khuyết điểm của LINQ <ul><li>Ưu điểm: </li></ul><ul><li>Lập trình với cơ sở dữ liệu một cách dễ dàng. </li></ul><ul><li>Không cần biết nhiều ngôn ngữ truy vấn khác mà vẫn có thể làm việc. </li></ul><ul><li>Đơn giản hóa việc viết truy vấn. </li></ul><ul><li>Khuyết điểm: </li></ul><ul><li>Lệ thuộc vào môi trường lập trình .NET </li></ul>
    15. 15. LINQ Giới thiệu về LINQ Lợi ích sử dụng LINQ Ưu, khuyết điểm của LINQ Hình ảnh Demo LINQ to SQL 4 1 2 3
    16. 16. LINQ Hình ảnh Demo LINQ to SQL 4
    17. 17. Thêm CSDL vào Project
    18. 18. Thêm CSDL vào Project
    19. 19. Thêm CSDL vào Project
    20. 20. Thêm lớp LINQ to SQL
    21. 21. Thêm lớp LINQ to SQL
    22. 22. Thêm lớp LINQ to SQL
    23. 23. Thêm lớp LINQ to SQL
    24. 24. Thêm lớp LINQ to SQL
    25. 25. Cấu trúc quản lý của LINQ to SQL
    26. 26. Thêm, xóa, sửa dữ liệu
    27. 27. Load dữ liệu lên Form <ul><li>Load tất cả thông tin các loại sách ở bảng LoaiSach trong cơ sở dữ liệu lên form. </li></ul>
    28. 28. Thêm dữ liệu <ul><li>Thêm một loại sách mới vào bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
    29. 29. Cập nhật dữ liệu <ul><li>Cập nhật thông tin loại sách vào bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
    30. 30. Xóa dữ liệu <ul><li>Xóa một loại sách ra khỏi bảng LoaiSach trong cơ sở dữ liệu. </li></ul>
    31. 31. Truy vấn trên một bảng <ul><li>Tra cứu thông tin loại sách theo mã loại sách. </li></ul>
    32. 32. Truy vấn trên nhiều bảng <ul><li>Lấy thông tin tên sách, tên loại sách, tác giả, tên nhà xuất bản của tất cả các sách. </li></ul>
    33. 33. Sử dụng distinct <ul><li>Lấy tất cả tên loại sách trong bảng LoaiSach. Mỗi tên chỉ xuất hiện 1 lần. </li></ul>
    34. 34. Sử dụng Order By <ul><li>Sắp xếp tên các loại sách trong bảng LoaiSach theo thứ tự tăng dần. </li></ul>
    35. 35. Sử dụng Group By <ul><li>Ứng với mã loại sách là 1, đếm số lượng sách theo tên sách. </li></ul>
    36. 36. Sử dụng join <ul><li>Lấy thông tin tên sách, tên loại sách, tác giả của tất cả các sách. </li></ul>
    37. 37. Tham khảo <ul><li>LINQ for Visual C Sharp 2008 Jun 2008 – Fabio Claudio Ferracchiati </li></ul><ul><li>Professional LINQ - Scott Klein </li></ul>
    38. 38. NHibernate Nhóm D3 + D5 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
    39. 39. Thành viên nhóm <ul><li>Nhóm D3: </li></ul><ul><li>Ngô Minh Nhựt – 0612322 </li></ul><ul><li>Võ Quang Nhật – 0612318 </li></ul><ul><li>Lê Nguyễn Hoài Nam – 0612276 </li></ul><ul><li>Huỳnh Công Tín – 0612534 </li></ul><ul><li>Nguyễn Văn Nhật – 0612314 </li></ul><ul><li>Nhóm D 5 : </li></ul><ul><li>Trần Nguyễn Hướng – 0412310 </li></ul><ul><li>Lê Văn Thắng – 0512335 </li></ul><ul><li>Trương Hoàng Linh – 0412315 </li></ul><ul><li>Huỳnh Minh Hoàng – 0512126 </li></ul><ul><li>Tôn Long Thịnh – 0512344 </li></ul>
    40. 40. Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
    41. 41. Giới thiệu <ul><li>Hibernate: là Framework mở nguồn mở hỗ trợ truy xuất CSDL cho các ứng dụng hướng đối tượng sử dụng CSDL quan hệ </li></ul><ul><li>NHibernate: dành cho ứng dụng .NET </li></ul><ul><li>Là các DLL chứa các lớp đối tượng </li></ul>
    42. 42. <ul><li>NHibernate trong mô hình 3 lớp: </li></ul>Giới thiệu
    43. 43. Giới thiệu <ul><li>NHiberate có nhiệm vụ chuyển đổi dữ liệu giữa ứng dụng và CSDL: </li></ul><ul><ul><li>Đọc </li></ul></ul><ul><ul><li>Ghi </li></ul></ul><ul><ul><li>Ánh xạ CSDL vào NHibernate dựa vào tập tin hibernate.cfg.xml </li></ul></ul><ul><ul><li>Ánh xạ giữa lớp và bảng dựa vào tập tin cấu hình *.hbm.xml </li></ul></ul>
    44. 44. Giới thiệu <ul><li>Lịch sử: </li></ul><ul><li>Được bắt đầu bởi: Tom Barrett </li></ul><ul><li>2005, JBoss, Inc. (thuộc Red Hat) đầu tư phát triển dựa án này </li></ul><ul><li>2006 JBoss ngừng hỗ trợ </li></ul><ul><li>Hiện tại, NHibernate được phát triển chung </li></ul><ul><li>www.hibernate.com/343.html </li></ul>
    45. 45. Giới thiệu <ul><li>Lịch sử: các phiên bản </li></ul><ul><li>NHibernate 1.2.1: 11/2007, hỗ trợ .NET 2.0 </li></ul><ul><li>NHibernate 2.1: đang được phát triển </li></ul><ul><li>NHibernate 3.0: phiên bản dự kiến dành cho .Net 3.5 </li></ul>
    46. 46. Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
    47. 47. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    48. 48. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    49. 49. Cài đặt <ul><li>Download NHibernate tại: www.hibernate.com/6.html </li></ul><ul><li>Chép thư mục chứa DLL vào thư mục chứa Project </li></ul>
    50. 50. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    51. 51. Tạo Project, add reference <ul><li>Tạo Project, Add reference, Browse đến thư mục chứa các DLL của NHibernate </li></ul>
    52. 52. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    53. 53. Tạo CSDL và các lớp đối tượng <ul><li>Tạo CSDL quan hệ </li></ul>
    54. 54. Tạo CSDL và các lớp đối tượng <ul><li>Tạo các lớp đối tượng tương ứng với các bảng của CSDL </li></ul>
    55. 55. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    56. 56. Tạo các tập tin cấu hình <ul><li>Tạo tập tin cấu hình hibernate.cfg.xml </li></ul><ul><li>Giúp cho NHibernate biết cần phải liên kết với CSDL nào </li></ul><ul><li><?xml version=&quot;1.0&quot; ?> </li></ul><ul><li><hibernate-configuration xmlns=&quot;urn:nhibernate-configuration-2.2&quot; > </li></ul><ul><li><session-factory > </li></ul><ul><li><property name=&quot; connection.provider &quot;> NHibernate.Connection.DriverConnectionProvider </property> </li></ul><ul><li><property name=&quot; dialect &quot;> NHibernate.JetDriver.JetDialect, NHibernate.JetDriver </property> </li></ul><ul><li><property name=&quot; connection.driver_class &quot; >NHibernate.JetDriver.JetDriver, NHibernate.JetDriver </property> </li></ul><ul><li><property name=&quot; connection.connection_string &quot;> Provider=Microsoft.Jet.OLEDB.4.0;Data Source= QuanLyThuVien.mdb </property> </li></ul><ul><li></session-factory> </li></ul><ul><li></hibernate-configuration>` </li></ul>
    57. 57. Tạo các tập tin cấu hình <ul><li>Tạo tập tin cấu hình hibernate.cfg.xml </li></ul><ul><li><property name=&quot; connection.connection_string “> Provider=Microsoft.Jet.OLEDB.4.0;Data Source= QuanLyThuVien.mdb </property> </li></ul><ul><li>- Chuỗi kết nối đến CSDL </li></ul>
    58. 58. Tạo các tập tin cấu hình <ul><li>Tạo các tập tin ánh xạ *.hbm.xml </li></ul><ul><li>Mỗi lớp có một tập tin ánh xạ tương ứng: [ TenLop ].hbm.xml </li></ul>
    59. 59. Tạo các tập tin cấu hình <ul><li>Tạo các tập tin ánh xạ *.hbm.xml </li></ul><class name=&quot; DTO.SachDto,DTO &quot; table=&quot; Sach “> <id name=&quot; MSach &quot; column=&quot; MSach &quot; type=&quot; int “> <generator class=&quot; increment &quot; /> </id> <property name=&quot; TenSach &quot; column=&quot; TenSach &quot; type=&quot; String &quot; />
    60. 60. Sử dụng NHibernate <ul><li>Cài đặt </li></ul><ul><li>Tạo Project, add reference </li></ul><ul><li>Tạo CSDL và các lớp đối tượng </li></ul><ul><li>Tạo các tập tin cấu hình </li></ul><ul><li>Truy xuất dữ liệu </li></ul>
    61. 61. Truy xuất dữ liệu <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL </li></ul><ul><li>Đóng kết nối với CSDL </li></ul>
    62. 62. <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL </li></ul><ul><li>Đóng kết nối với CSDL </li></ul>Truy xuất dữ liệu
    63. 63. Ánh xạ lớp đối tượng và CSDL Load file cấu hình và file ánh xạ, thực hiện ánh xạ và trả về đối tượng ISessionFactory.
    64. 64. <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL </li></ul><ul><li>Đóng kết nối với CSDL </li></ul>Truy xuất dữ liệu
    65. 65. Kết nối CSDL Đối tượng session giữ kết nối với CSDL và thực hiện các thao tác đọc ghi trên CSDL
    66. 66. <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL </li></ul><ul><li>Đóng kết nối với CSDL </li></ul>Truy xuất dữ liệu
    67. 67. Thực hiện các thao tác với CSDL
    68. 68. Thực hiện các thao tác với CSDL – select IList lst = session. Find ( “from DTO.DocGiaDto” ); // Đọc tất cả các record trong bảng DocGia DocGiaDto dg = session. Load < DocGiaDto >(maDG); dg.HoTen = “ NMN ”; // Lấy ra một record từ bảng DocGia
    69. 69. Thực hiện các thao tác với CSDL – insert DocGiaDto dg = new DocGiaDto (); dg.HoTen = “ NMN ”; dg.GioiTinh = 1; // … session. Save (dg); // Lưu đọc giả dg vào bảng DocGia
    70. 70. Thực hiện các thao tác với CSDL – delete DocGiaDto dg = session. Load < DocGiaDto >(maDg); session. Delete (dg); // Xóa đọc giả “dg” khỏi bảng DocGia
    71. 71. Thực hiện các thao tác với CSDL – update DocGiaDto dg = session. Load < DocGiaDto >(maDg); dg.HoTen = “Cập nhật”; session. Update (dg); // Cập nhật thông tin đọc giả “dg”
    72. 72. Thực hiện các thao tác với CSDL – SqlQuery <ul><li>String strSql = “ select s.TenSach, ls.TenLoaiSach, s.TacGia from Sach s inner join LoaiSach ls on s.LoaiSach = ls.MLoaiSach where s.TrangThai=true ” </li></ul><ul><li>/* Lấy về sách (Tên sách, tên loại sách, tác giả) chưa được mượn */ </li></ul><ul><li>ISQLQuery query = session. CreateSQLQuery (strSql); </li></ul><ul><li>query. AddScalar (“TenSach&quot;,NHibernateUtil.String); </li></ul><ul><li>query. AddScalar (“TenLoaiSach&quot;,NHibernateUtil.String); </li></ul><ul><li>query. AddScalar (“TacGia&quot;,NHibernateUtil.String); </li></ul><ul><li>IList lst = query. List (); </li></ul><ul><li>/* lst chứa danh sách những quyển sách tìm được */ </li></ul>
    73. 73. Thực hiện các thao tác với CSDL – SqlQuery <ul><li>String strSql = “ select * from DocGia where HoTen = ? ” </li></ul><ul><li>/* Tìm độc giả theo tên */ </li></ul><ul><li>ISQLQuery query = session. CreateSQLQuery (strSql); </li></ul><ul><li>query. SetString (“ NMN ”); // Set Parameters </li></ul><ul><li>query. AddEntity ( typeof ( DocGiaDto )); </li></ul><ul><li>IList lst = query. List (); </li></ul><ul><li>/* lst chứa danh sách độc giả có tên “NMN”*/ </li></ul>
    74. 74. Thực hiện các thao tác với CSDL transaction. Commit (); Cập nhật các thay đổi xuống CSDL transaction. Rollback (); Hủy bỏ các thay đổi
    75. 75. <ul><li>Ánh xạ lớp đối tượng và CSDL </li></ul><ul><li>Kết nối với CSDL </li></ul><ul><li>Thực hiện các thao tác với CSDL </li></ul><ul><li>Đóng kết nối với CSDL </li></ul>Truy xuất dữ liệu thông qua NHibernate
    76. 76. Đóng kết nối với CSDL
    77. 77. Nội dung chính Giới thiệu Sử dụng NHibernate Ưu, khuyết điểm 4 1 2
    78. 78. Ưu, khuyết điểm <ul><li>Ưu điểm </li></ul><ul><li>Hỗ trợ nhiều loại cơ sở dữ liệu (multi – database support) </li></ul><ul><li>Giảm gánh nặng viết mã nguồn giao tiếp với cơ sở dữ liệu </li></ul><ul><li>Cung cấp nhiều phương thức truy xuất CSDL </li></ul>
    79. 79. Ưu, khuyết điểm <ul><li>Khuyết điểm: </li></ul><ul><li>Người dùng NHibernate phải học cách viết tập tin mapping. </li></ul><ul><li>Việc truy xuất CSDL đôi khi không tối ưu, dẫn đến tốc độ thực thi chậm, ảnh hưởng performance của phần mềm. </li></ul><ul><li>Khó debug phần truy xuất cơ sở dữ liệu </li></ul><ul><li>Gặp không ít khó khăn trong khi cấu hình </li></ul>
    80. 80. Tham khảo <ul><li>http://www.hibernate.com </li></ul><ul><li>http://en.wikipedia.org/wiki/NHibernate </li></ul><ul><li>http://www.codeproject.com/KB/architecture/NHibernateArchitecture.aspx </li></ul><ul><li>http://www.codeproject.com/KB/database/Nhibernate_Made_Simple.aspx </li></ul>
    81. 81. NET – TIER Nhóm D4 + D6 GVLT: Th.S Lâm Quang Vũ GVHD: Nguyễn Huy Khánh
    82. 82. Thành viên nhóm <ul><li>Nhóm D 4 : </li></ul><ul><li>Nguyễn Hải Đăng - 0512438 </li></ul><ul><li>Đào Duy Minh Đăng – 0512439 </li></ul><ul><li>Phan Xuân Đình – 0512444 </li></ul><ul><li>Nguyễn Lê Thanh Thảo – 0612418 </li></ul><ul><li>Huỳnh Thanh Tuyền – 0612494 </li></ul><ul><li>Nhóm D 6 : </li></ul><ul><li>Nguyễn Thành Trung – 0 612468 </li></ul><ul><li>Huỳnh Minh Trác – 0612482 </li></ul><ul><li>Nguyễn Hữu Trí – 0612485 </li></ul><ul><li>Vũ Ngọc Yến Vũ – 0 612584 </li></ul>
    83. 83. Nội dung chính Giới thiệu công cụ CodeSmith Giới thiệu netTiers Demo netTiers 3 1 2
    84. 84. CÔNG CỤ CODESMITH <ul><li>Giới thiệu </li></ul><ul><li>Công cụ phát sinh mã dựa trên template có sẵn. </li></ul><ul><li>Hỗ trợ ngôn ngữ: C#, VB.NET, Java, T-SQL, FORTRAN. </li></ul><ul><li>Cú pháp viết giống ASP.NET. </li></ul>
    85. 85. CÔNG CỤ CODESMITH <ul><li>Template là gì? </li></ul><ul><li>Là một khung mẫu do người dùng định nghĩa theo ngôn ngữ của CodeSmith. </li></ul>
    86. 86. CÔNG CỤ CODESMITH STUDIO <ul><li>Công cụ CodeSmith Studio </li></ul><ul><li>Giúp soạn thảo, biên dịch và thực thi một template. </li></ul><ul><li>Hỗ trợ soạn thảo nhanh chóng giống như Visual Studio.Net. </li></ul>
    87. 87. Menu bar Tool bar Cửa sổ chính Templete Explorer Tab Templetet Tab Output
    88. 88. CÔNG CỤ CODESMITH EXPLORER <ul><li>Công cụ CodeSmith Explorer </li></ul><ul><li>Giúp phát sinh mã từ một template. </li></ul><ul><li>Tổ chức, quản lý các thư mục chứa file template (cst). </li></ul>
    89. 89. CÔNG CỤ CODESMITH EXPLORER
    90. 90. NETTIERS <ul><li>Giới thiệu </li></ul><ul><li>Là một tập các template (nguồn mở) dùng để phát sinh mã. Giúp đơn giản hóa việc tạo mới một ứng dụng chỉ trong vài phút. </li></ul><ul><li>Dựa trên công cụ CodeSmith để phát sinh ra mã. </li></ul><ul><li>Cung cấp cho người phát triển 1 framework đầy đủ để phát triển ứng dụng. </li></ul>
    91. 91. NETTIERS Kiến trúc .netTiers
    92. 92. Demo Bước 1: Khởi động CODESMITH EXPLORER, mở template nettiers. Bước 2: Nhập các thông tin của dự án. Bước 3: genarate code.
    93. 93. Company Name
    94. 95. Demo Add >> New item >> Application Configuration File Copy nội dung từ file: NetTiers*.UnitTests *.UnitTests.dll.config Bước 4: Thêm project mới vào cho dự án, cấu hình cho project:
    95. 96. Bước 5: Thiết kế giao diện
    96. 97. AccountService accountsService = new AccountsService(); //GetAll() TList<Accounts> accountList = accountsService.GetAll(); //GetPagedl() TList<Accounts> accountList = accountsService.GetPaged(&quot;IsActive = 1 AND AccountName LIKE 'smi%'&quot;); //GetByFk() TList<Accounts> accountList = accountsService.GetByCustomerId(25); ………………………………………………………………… . Bước 6: Viết code select, insert, delete, update dữ liệu
    97. 100. //Insert() Account accountEntity = new Account(); accountEntity.AccountName = &quot;MyAccountName&quot;; accountEntity.CreatedDate = DateTime.Now; accountsService.Insert(accountEntity);
    98. 101. //Delete() bool result = accountsService.Delete(23); DangKyService dkSer = new DangKyService (); dkSer.Delete(m.Isbn, m.MaDocgia);
    99. 102. //Update() accountEntity.AccountName = &quot;MyAccountName 2&quot;; accountsService.Update(accountEntity); CuonSachService csSer = new CuonSachService(); CuonSach cs = csSer.GetByIsbnMaCuonSach(m.Isbn, m.MaCuonsach); cs.TinhTrang = &quot;Y&quot;; csSer.Update(cs);
    100. 103. Vấn đề select từ nhiều bảng dữ liệu Danh sách các độc giả đang đăng ký mượn sách, hiển thị các thông tin: họ tên độc giả, tựa sách, ngày giờ đăng ký
    101. 105. Tham Khảo http://patternshare.org/default.aspx/Home.PP.Singleton http://www.dofactory.com/Patterns/PatternDecorator.aspx http://www.NetTiers.com http://docs.nettiers.com/ http://msdn2.microsoft.com/en-us/library/aa480458.aspx
    102. 106. So sánh <ul><li>Giống nhau: </li></ul><ul><li>Đều có cơ chế ORM </li></ul><ul><li>Khác nhau: </li></ul><ul><li>LINQ không phải là 1 ORM tool hoàn chỉnh </li></ul><ul><li>Nhibernate là 1 ORM tool. </li></ul><ul><li>Net-Tier là 1 ORM tool. </li></ul>
    103. 107. So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ chủ yếu là ngôn ngữ truy vấn hỗ trợ intellisense, trình biên dịch sẽ check syntax của câu truy vấn. </li></ul><ul><li>Nhibernate có ngôn ngữ truy vấn khá giới hạn, không có intellisense. </li></ul><ul><li>Net-Tier không có ngôn ngữ truy vấn dữ liệu mà truy vấn được phát sinh tự động. </li></ul>
    104. 108. So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ chủ yếu dùng cho Microsoft SQL Server. </li></ul><ul><li>Nhibernate có thể được dùng với hầu hết bất kỳ hệ quản trị CSDL nào miễn là cung cấp DB provider. </li></ul><ul><li>Net-Tier chủ yếu dùng cho Microsoft SQL Server, nhưng vẫn có thể thao tác với các DBMS khác thông qua loại Generic. </li></ul>
    105. 109. So sánh <ul><li>Khác nhau: </li></ul><ul><li>LINQ Closed source. </li></ul><ul><li>Nhibernate Open source. </li></ul><ul><li>Net-Tier Open source. </li></ul>

    ×