I) T ng quan v Hibernate
Hibernate 3.0, m t công ngh m i nh t trong n n t ng c t l i c a J2EE EJB
3.0.
Hibernate là m t framework cho persistence layer, là m t d ch v l u tr và truy ư
v n d li u quan h m nh m và nhanh chóng. Hibernate giúp ng i phát tri n ườ
các class dùng đ l u tr d li u theo cách th c h ng đ i t ng: association, ư ướ ượ
inheritance, polymorphism, composition và collections. Hibernate cho phép th c
hi n các câu truy v n d li u b ng cách s d ng ngôn ng SQL m r ng c a
Hibernate (HQL) ho c là ngôn ng SQL nguyên thu cũng nh là s d ng các ư
API.
Không gi ng nh các persistence layer khác, Hibernate không n đi s c ư
m nh c a ngôn ng SQL thu n túy mà Hibernate còn đ m b o cho ng i phát ườ
tri n đ u t vào công ngh và tri th c c s d li u quan h là luôn luôn chính ư ơ
xác. Và đi u quan tr ng h n n a là Hibernate đ c license theo LGPL (Lesser ơ ượ
GNU Public License). Theo đó, b n có th tho i mái s d ng Hibernate trong các
d án open source ho c các d án th ng m i (commercial). ươ
Các tính năng c a Hibernate:
* Hibernate 3.0 cung c p ba đ y đ tính năng ti n truy v n: Hibernate Query
Language, Hibernate Criteria Query API và các truy v n t nhiên.
* B l c đ làm vi c v i d li u t m th i ,vùng d li u ho c các d li u
đ c phân quy nượ
* Nâng cao kh năng truy v n v i API : v i s h tr đ y đ cho các phép
chi u ế,phép k t h p và phép ch nế .
* Ki m soát đ c t ượ h i gian ch y: thông qua JMX ho c Java API, bao g m c
b đ m trình duy t m c th c p .
* H tr IDE Eclipse, bao g m m t b Eclipse plug-in đ làm vi c v i
Hibernate 3.0, bao g m biên t p liên k tế, t ng tác v iươ m u truy v n, công c
nh n l i c u trúc c s d li u. ơ
* Hibernate là mi n phí theo LGPL: Hibernate có th đ c dùng đ phát tri n ượ
phân ph i các ng d ng mi n phí.
* Hibernate có th m r ng: Hibernate mang l i hi u năng cao và ki n trúc ế2
l p c a nó có th đ c s d ng trong môi tr ng t p trung. ượ ườ
* Gi m th i gian p hát tri n ng d ng : Hibernate làm gi m th i gian phát tri n
các ng d ng vì nó h tr th a k , đa hình, thành ph n và ế các framework trong
java.
* Hibernate XML cho phép liên k t d li u đ c bi u di n nh XML vàế ượ ư
POJOs thay th cho nhau.ế
II) Ki n Trúc Hibernateế
S đ trên cho th y r ng Hibernate là s d ngơ c s d li u vàơ file c u hình
đ cung c p các d ch v lâu dài cho ng d ng.
Đ s d ng Hibernate, s c n thi t ế ph i t o ra các l p Java bi u di n cho
b ng t ng ngươ trong c s d li u và sau ơ đó ánh x các thu c tính c a l p
v i các c t c a b ng trong c s d li u. Sau đó, Hibernate có th đ c sơ ượ
d ng đ th c hi n các thao tác trên c s d li u nh chèn, ch n, c p nh t vàơ ư
xóa các b n ghi trong b ng. Hibernate t đ ng t o ra các truy v n đ th c hi n
các thao tác này.
Ki n trúc ếHibernate có ba thành ph n chính:
* Qu n lý k t n i ế
Hibernate cung c p d ch v qu n lý k t n iế c s d li u ơ hi u qu . K t ế
n i c s d li u là ph n ơ t n kém tài nguyên và hi u năng nh t trong vi c
t ng tác v i c s d li u vì nó đòi h i nhi u tài nguyên ươ ơ ph i m và đóng
k t n i c s d li u.ế ơ
* Qu n lý giao d ch:
Qu n lý d ch v giao d ch cung c p kh năng ng i s d ng đ th c hi n ườ
nhi u h n m t ơ câu l nh t i m t th i đi m.
*
Đ i t ng b n đ quan h : ượ
Đ i t ng b n đ quan h là k thu t l p ượ ánh x bi u di n d li u t m t
mô hình đ i t ng cho ượ đ nế m t mô hình d li u quan h . Đ i t ng này đ c ượ ượ
s d ng đê th c hi n các thao tác nh truy v n ,thêm m i, ư c p nh t và xóa các
b n ghi d ng b ng bên d i ướ .Hibernate là r t t t công c nh xa nh là đ i ư ư
t ng b n đ quan h là m i quan tâm, nh ng v m t qu n lý k t n i vàượ ư ế
qu n lý giao d ch, đó là thi u hi u năng và kh năng. Vì v y, th ng ế ườ Hibernate
đ c s d ng ượ đ qu n lý k t n i khác và các công c qu n lý giao d ch. Ví d ế
apache DBCP đ c s d ng đ k t n i t ng h p v i Hibernate.ượ ế
Hibernate cung c p r t nhi u tính linh ho t trong s d ng. Nó đ c g i là ki n ượ ế
trúc "Lite" khi chúng ta ch s d ng các thành ph n đ i t ng b n đ quan h . ượ
Trong khi ki n trúc "Full Cream" t t c trong ba thành ph n đ i t ng quan hế ượ
l p b n đ , qu n lý k t n i và Qu n lý giao d ch đ c s d ng. ế ượ
III) Thành ph n c a ng d ng Hibernate
Các ORM framework mang đ n cho các developer nh ng t duy trong kháiế ư
ni m v quan h trong khi v n làm vi c v i các l p. Có nhi u framework
mang m c đích này. Nh ng gì làm cho Hibernate khác v i nh ng framework
khác chính là tính đ n gi n và kh chuy n c a nó. Đ t o nên ng d ngơ
Hibernate, có ba đi u c n ph i có, đó là:
1. Persistence Class:
Persistence class là m t Plain Old Java Object hay POJO model. M t POJO là
t ng t nh m t JavaBean, có nh ng getter và setter đ truy câp các thu c tínhươ ư
c a nó là nh ng instance variable (bi n th c th ). Persistence class có nh ng đ c ế
đi m d i đây: ướ
Nó là thay th h ng đ i t ng cho b ng c s d li uế ướ ượ ơ
Các thu c tính c a b ng tr thành nh ng instance variable c a persistence
class.
Ki u d li u c a các instance variable là domain c a các thu c tính.
Đ i t ng c a persistence class thay h cho hàng c a b ng. ượ ế
2. Mapping file:
Mapping file là m t file XML ch a ánh x chi ti t gi a persistence class và b ng ế
nó thay th . Các thành ph n b t bu c c a file XML này là:ế
2.1 Hibernate-mapping: Đây là thành ph n g c bao t t c các thành ph n
khác
2.2 Class: đ c s d ng đ ánh x tên b n thành persistence class. Tênượ