ORM - Mô hình lập trình ánh xạ đối tượng với database
ORM viết tắt của Object Relation Mapping, được hiểu như là kỹ thuật ánh xạ từ mô hình đối tượng với các table trong cơ sở dữ liệu quan hệ. Trong đó các đối tượng ánh xạ với các bảng và quan hệ của table trong database sẽ được ánh xạ với sự ràng buộc liên quan trong đối tượng
Hiện nay trong thế giới lập trình về .NET, có nhiều công cụ về ORM, tôi liệt kê các ORM được xem là nổi trội hiện nay:
Vậy ORM nó có những điểm hay, điểm dở nào, và vì sao chúng ta lại sử dụng nó?
Với ORM, bạn có thể sử dụng với nhiều hệ quản trị cơ sở dữ liệu khác nhau, nó độc lập hoàn toàn, và thường các ORM trên thị trường hiện nay đều hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau, bạn chỉ cần thay đổi driver tương tác là có thể làm việc một cách nhanh chóng mà không cần phải thay đổi bất kỳ dòng code nào. Thật tuyệt phải không?
Một thế mạnh nữa của ORM, là bạn có thể thao tác truy cập, xử lý database một cách dễ dàng và nhanh chóng. So với cách thông thường bạn phải sử dụng các câu lệnh SQL để truy vấn và xử lý dữ liệu. Nhưng với ORM, bạn không cần phải sử dụng SQL, mà chỉ cần thao tách, sử dụng các API đơn giản và dễ dùng của nó để truy vấn và dữ lý dữ liệu. Tuy nhiên đối với ORM NHibernate, bạn cũng có thể sử dụng HQL, một ngôn ngữ truy vấn tương tự SQL, gần gũi và dể sử dụng để thao tác truy vấn đối tượng.
Như bạn thấy đấy, so với lập trình theo cách truyền thống bạn sẽ mất nhiều thời gian hơn để lập trình xử lý dữ liệu. Với ORM bạn sẽ tiết kiệm được nhiều thời gian để implement tầng Data Access Layer, mà có thời gian tập trung nhiều hơn với tầng Business Logic của dự án
Wow, ORM thật "đã" nhỉ, nhưng khoan mừng vội nào, nó còn một số hạn chế, mà nhiều người còn e ngại đó
Với ORM Framework, bạn không cần dùng SQL để thao tác dữ liệu, vậy thì làm sao để nó làm việc với database? Đó là do nó tự động gen ra các câu lệnh SQL như Insert, Update, Delete, Select dữ liệu bên dưới database, nên bạn sẽ khó hoặc có thể không can thiệp vào để tối ưu nó hơn. Tuy nhiên các ORM Framework đều hỗ trợ bạn gọi câu lệnh SQL trực tiếp trong những tình huống cần thiết.
Ngoài ra bạn còn phải gặp nhiều tình huống nan giải mà bất kì ai làm việc với ORM cũng phải gặp qua: cách thức quản lý session truy xuất của ORM – nếu bạn làm việc với Web project, lazy loading, tình huống load toàn bộ database lên nếu không thiết kế đúng cách… Và khi đó hệ thống của bạn sẽ làm việc một cách ì ạch
Đừng lo lắng, hãy thử sử dụng nó, bạn sẽ học hỏi và biết thêm nhiều về các kiến trúc lập trình, hãy dùng nó và cảm nhận. Khi bạn đã master về nó, bạn sẽ tự thiết kế được một dự án rất linh hoạt và nhanh chóng.
Trong bài viết kế tiếp, tôi sẽ trình bày với các bạn một ý tưởng lập trình tôi đã làm qua sử dụng NHibernate, có lẽ cũng nên quảng cáo tý nhỉ?
Với ý tưởng này, bạn sẽ lập trình cơ sở dữ liệu một cách nhanh chóng, cho dù yêu cầu hệ thống như thế nào đi nữa bạn cũng không thay đổi cấu trúc database, mà chỉ thay đổi vài dòng code là hệ thống đáp ứng được ngay. Hehe
Hẹn bạn trong bài viết kế tiếp
Hiện nay trong thế giới lập trình về .NET, có nhiều công cụ về ORM, tôi liệt kê các ORM được xem là nổi trội hiện nay:
- .NET Persistence
- BBADataObjects
- DataObjects.NET
- Data Tier Modeler for .NET
- DotNorm
- Eldorado.NET
- Enterprise Core Objects (ECO™)
- Entity Broker
- eXpress Persistent Objects for .NET
- FastObjects.NET
- JC Persistent Framework
- LLBLGen Pro
- ModelWorks
- Nhibernate
- Nolics.NET
- Norm
- Norpheme
- ObjectBroker
- ObjectSpaces
- ObjectSpark
- Objectz.NET
- OJB.NET
- OPF.Net (Object Persistent Framework)
- ORM.NET
- Pragmatier Data Tier Builder
- RapTier
- Sisyphus Persistence Framework
- TierDeveloper
- Bob.NET
- ObjectPersistor.NET
- Genome
Vậy ORM nó có những điểm hay, điểm dở nào, và vì sao chúng ta lại sử dụng nó?
Với ORM, bạn có thể sử dụng với nhiều hệ quản trị cơ sở dữ liệu khác nhau, nó độc lập hoàn toàn, và thường các ORM trên thị trường hiện nay đều hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau, bạn chỉ cần thay đổi driver tương tác là có thể làm việc một cách nhanh chóng mà không cần phải thay đổi bất kỳ dòng code nào. Thật tuyệt phải không?
Một thế mạnh nữa của ORM, là bạn có thể thao tác truy cập, xử lý database một cách dễ dàng và nhanh chóng. So với cách thông thường bạn phải sử dụng các câu lệnh SQL để truy vấn và xử lý dữ liệu. Nhưng với ORM, bạn không cần phải sử dụng SQL, mà chỉ cần thao tách, sử dụng các API đơn giản và dễ dùng của nó để truy vấn và dữ lý dữ liệu. Tuy nhiên đối với ORM NHibernate, bạn cũng có thể sử dụng HQL, một ngôn ngữ truy vấn tương tự SQL, gần gũi và dể sử dụng để thao tác truy vấn đối tượng.
Như bạn thấy đấy, so với lập trình theo cách truyền thống bạn sẽ mất nhiều thời gian hơn để lập trình xử lý dữ liệu. Với ORM bạn sẽ tiết kiệm được nhiều thời gian để implement tầng Data Access Layer, mà có thời gian tập trung nhiều hơn với tầng Business Logic của dự án
Wow, ORM thật "đã" nhỉ, nhưng khoan mừng vội nào, nó còn một số hạn chế, mà nhiều người còn e ngại đó
Với ORM Framework, bạn không cần dùng SQL để thao tác dữ liệu, vậy thì làm sao để nó làm việc với database? Đó là do nó tự động gen ra các câu lệnh SQL như Insert, Update, Delete, Select dữ liệu bên dưới database, nên bạn sẽ khó hoặc có thể không can thiệp vào để tối ưu nó hơn. Tuy nhiên các ORM Framework đều hỗ trợ bạn gọi câu lệnh SQL trực tiếp trong những tình huống cần thiết.
Ngoài ra bạn còn phải gặp nhiều tình huống nan giải mà bất kì ai làm việc với ORM cũng phải gặp qua: cách thức quản lý session truy xuất của ORM – nếu bạn làm việc với Web project, lazy loading, tình huống load toàn bộ database lên nếu không thiết kế đúng cách… Và khi đó hệ thống của bạn sẽ làm việc một cách ì ạch
Đừng lo lắng, hãy thử sử dụng nó, bạn sẽ học hỏi và biết thêm nhiều về các kiến trúc lập trình, hãy dùng nó và cảm nhận. Khi bạn đã master về nó, bạn sẽ tự thiết kế được một dự án rất linh hoạt và nhanh chóng.
Trong bài viết kế tiếp, tôi sẽ trình bày với các bạn một ý tưởng lập trình tôi đã làm qua sử dụng NHibernate, có lẽ cũng nên quảng cáo tý nhỉ?
Với ý tưởng này, bạn sẽ lập trình cơ sở dữ liệu một cách nhanh chóng, cho dù yêu cầu hệ thống như thế nào đi nữa bạn cũng không thay đổi cấu trúc database, mà chỉ thay đổi vài dòng code là hệ thống đáp ứng được ngay. Hehe
Hẹn bạn trong bài viết kế tiếp
Nhận xét
Đăng nhận xét