Professional Documents
Culture Documents
HIBERNATE MAPPING
MANY-TO-MANY
Nguyn Hong Anh Email: nhanh@fit.hcmus.edu.vn H KHTN, 2011
Upload by Cafeitvn.com
Ni dung trnh by
One to many
Lazy Initialization
Fetch Cascade
Upload by Cafeitvn.com
AB PK A PK IDA ... ... PK IDA (FK) IDB (FK) PK B IDB ... ...
Upload by Cafeitvn.com
Upload by Cafeitvn.com
Many to many
SinhVien
1 * 1
KhoaHoc
*
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
Upload by Cafeitvn.com
Many to many
SinhVien
1 * 1
KhoaHoc
*
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
Upload by Cafeitvn.com
SinhVien
KhoaHoc
1 *
SinhVien POJO
1 2 3 4 5 6 7 8 9 10 11 12 13 public class SinhVien
- maSinhVien :String - maKhoaHoc :String * 1 - tenSinhVien :String - tenKhoaHoc :String - email :String - sinhViens :Set<SinhVien> - diaChi :String implements java.io.Serializable { - khoaHocs : Set<KhoaHoc>
String maSinhVien; String tenSinhVien; String email; String diaChi; Set<KhoaHoc> khoahocs = new HashSet<KhoaHoc>(0);
Upload by Cafeitvn.com
SinhVien
1 * 1
KhoaHoc
*
SinhVien.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<hibernate-mapping> <class catalog="quanlydangkyhocphan" name="pojo.SinhVien" table="sinhvien"> . . . <set inverse="false" name="khoahocs" table="khoahoc_sinhvien"> <key> <column length="10" name="MaSinhVien" not-null="true"/> </key> <many-to-many entity-name="pojo.KhoaHoc"> <column length="10 name="MaKhoaHoc" not-null="true"/> </many-to-many> </set> </class> </hibernate-mapping>
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
Upload by Cafeitvn.com
SinhVien
KhoaHoc
1 *
KhoaHoc POJO
1 2 3 4 5 6 7 8 9 10 11 12 public class KhoaHoc
- maSinhVien :String - maKhoaHoc :String * 1 - tenSinhVien :String - tenKhoaHoc :String - email :String - sinhViens :Set<SinhVien> - diaChi :String implements java.io.Serializable { - khoaHocs : Set<KhoaHoc>
private String maKhoaHoc; private String tenKhoaHoc; private Set<SinhVien> sinhviens = new HashSet<SinhVien>(0); // Cc phng thc khi to . . . // Cc phng thc get/set . . .
Upload by Cafeitvn.com
SinhVien
1 * 1
KhoaHoc
*
SinhVien.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<hibernate-mapping> <class catalog="quanlydangkyhocphan" name="pojo.KhoaHoc" table="khoahoc"> . . . <set inverse="true" name="sinhviens" table="khoahoc_sinhvien"> <key> <column length="10" name="MaKhoaHoc" not-null="true"/> </key> <many-to-many entity-name="pojo.SinhVien"> <column length="10" name="MaSinhVien" not-null="true"/> </many-to-many> </set> </class> </hibernate-mapping>
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
10
Upload by Cafeitvn.com
11
Upload by Cafeitvn.com
12
Upload by Cafeitvn.com
Lazy = true
13
Upload by Cafeitvn.com
Lazy Initialization
Trong Hibernate, Lazy Initialization gip
Lazy mc nh c gi tr l true
14
Upload by Cafeitvn.com
SinhVien
1 * 1
KhoaHoc
*
SinhVien.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<hibernate-mapping> <class catalog="quanlydangkyhocphan" name="pojo.SinhVien" table="sinhvien"> . . . <set inverse="false" name="khoahocs" fetch="join" lazy="false table="khoahoc_sinhvien"> <key> <column length="10" name="MaSinhVien" not-null="true"/> </key> <many-to-many entity-name="pojo.KhoaHoc"> <column length="10 name="MaKhoaHoc" not-null="true"/> </many-to-many> </set> </class> </hibernate-mapping>
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
15
Upload by Cafeitvn.com
16
Upload by Cafeitvn.com
Lazy = false
17
Upload by Cafeitvn.com
SinhVien
1 * 1
KhoaHoc
*
SinhVien.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<hibernate-mapping> <class catalog="quanlydangkyhocphan" name="pojo.SinhVien" table="sinhvien"> . . . <set inverse="false" name="khoahocs" table="khoahoc_sinhvien"> <key> <column length="10" name="MaSinhVien" not-null="true"/> </key> <many-to-many entity-name="pojo.KhoaHoc"> <column length="10 name="MaKhoaHoc" not-null="true"/> </many-to-many> </set> </class> </hibernate-mapping>
- maSinhVien :String - tenSinhVien :String - email :String - diaChi :String - khoaHocs : Set<KhoaHoc>
18
Upload by Cafeitvn.com
public class SinhVienDAO { public static SinhVien layThongTinSinhVien(String maSinhVien) { SinhVien sv = null; Session session = HibernateUtil.getSessionFactory() .openSession(); try { String hql= " select sv "; hql +="from SinhVien sv left join fetch sv.khoahocs"; hql += " where sv.maSinhVien=:maSinhVien"; Query query = session.createQuery(hql); query.setString("maSinhVien", maSinhVien); sv = (SinhVien) query.uniqueResult(); } catch (HibernateException ex) { System.err.println(ex); } finally { session.close(); } return sv; }
Nguyn Hong Anh nhanh@fit.hcmus.edu.vn H KHTN - 2011
Upload by Cafeitvn.com
20
Upload by Cafeitvn.com
HQL
21
Upload by Cafeitvn.com
22
Upload by Cafeitvn.com
23
Upload by Cafeitvn.com
24
Upload by Cafeitvn.com
Cascade
save-update
delete
25
Upload by Cafeitvn.com
26
Upload by Cafeitvn.com
HI V P
Upload by Cafeitvn.com
27