
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ượ ử ụ ể ạ ả

