Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (670.2 KB, 45 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b><small>Giảng viên: Tạ Việt PhươngE-mail: </small></b>
thường muốn làm việc với các đối tượng và không phải nhớ đến các dòng, các cột trong các bảng của cơ sở dữ liệu. ORM cho phép lấy dữ liệu từ CSDL quan hệ vào trong đối tượng
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">tượng thuộc ngơn ngữ lập trình hướng đối tượng chẳng hạn như C#, Java,… (các table tương ứng các class, mối ràng buộc giữa các table tương ứng quan hệ giữa các class ‘has a’ , ‘is a’).
<b><small>5</small></b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b><small>7</small></b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">vào việc lập trình hướng đối tượng (OOP).
<b><small>9</small></b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">liệu quan hệ sang các object trong ngôn ngữ hướng đối tượng.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">dụng java, tầng hibernate framework, tầng backhand api và tầng database.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b><small>13</small></b>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><small>hibernate.cfg.xml) và Class Mapping Setup - Thành phần này tạo ra kết nối giữa các lớp Java và các bảng cơ sở dữ liệu.</small>
CLASSPATH, và thay đổi biến classpath để bao gồm tất cả các JARs.
<b><small>15</small></b>
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Hibernate. Cần có một java bean cho mỗi table trong database. Các java bean này sẽ có các
getters/setters và một số ngoại lệ theo quy ước của Hibernate.
<b><small>17</small></b>
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><b><small>19</small></b>
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><b><small>21</small></b>
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">password, pool_size, autocommit.
<b><small>23</small></b>
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">o <b>hibernate.dialect: Cho phép hibernate tối ưu hóa SQL cho </b>
thích hợp với CSDL quan hệ đặc biệt.
o <b>hibernate.connection.driver_class: lớp driver class.</b>
o <b>hibernate.connection.url: url để kết nối tới CSDL thông qua </b>
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">➢ <b>Loại hibernate.dialect: của một số CSDL phổ biến:</b>
<i><small>DB2: org.hibernate.dialect.DB2Dialect</small></i>
<i><small>Microsoft SQL Server 2005: org.hibernate.dialect.SQLServer2005Dialect Microsoft SQL Server 2008: org.hibernate.dialect.SQLServer2008Dialect </small></i>
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><small><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">sang</property></small>
<small><!-- List of XML mapping files --><mapping resource="SinhVien.hbm.xml"/></session-factory></small>
<small></hibernate-configuration></small>
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27"><b><small>27</small></b>
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28"><small>thức khởi tạo khơng có tham số)</small>
<small>thuộc tính để public)</small>
<b><small>29</small></b>
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30"><small>public class SinhVien {</small>
<small>privateString maSV;</small>
<small>privateString hoTen;</small>
<small>privateString gioiTinh;</small>
<small>privateString noiSinh;</small>
<small>public SinhVien(){ } </small>
<small>public SinhVien(String maSV){this.maSV = maSV; } </small>
<small>public SinhVien(String maSV,String hoTen, String gioiTinh, </small>
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31"><b><small>31</small></b>
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Các thành phần quan trọng trong file mapping:
<b><hibernate-mapping>: phần tử gốc của tài liệu ánh xạ(mapping) </b>
<b>hibernate, nó chứa các phần tử khác và kết thúc với </hibernate- </b>
<b><class> Ánh xạ các lớp đối tượng với bảng trong CSDL.</b>
<small>oname : tên của lớp đối tượng dữ liệu</small>
<small>otable : tên bảng trong CSDL tương ứng với lớp của thuộc tính name</small>
<b><id> dùng để định danh id duy nhất của lớp đối tượng. Thường </b>
ánh xạ với khóa chính trong bảng CSDL. Có các thuộc tính sau :
<small>oname : tên thuộc tính được sử dụng trong lớp persistent</small>
<small>ocolumn : cột trong bảng CSDL để lưu khóa chính.</small>
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33"><b><generator> tạo ra giá trị ID khi thêm bản ghi mới vào CSDL </b>
bằng Hibernate. Một số phương thức tạo giá trị ID:
<small>oincrement : sử dụng để tạo ID, chỉ dùng cho kiểu long, int, short .</small>
<small>osequence : Hibernate sử dụng chuỗi để tạo khóa tự động. Thường được sử dụng với HQTCSDL : DB2, PostgreSQL, Oracle, SAP DB databases.</small>
<small>oassigned : đăng ký 1 phương thức khởi tạo ID , phương thức nàyđược tạo ra bởi người phát triển ứng dụng.</small>
<small>oidentity: ID tự động tạo ra bởi CSDL.</small>
<b><property> sử dụng các thuộc tính giống như thẻ ID nhưng </b>
khơng có thẻ con <generator>. Được dùng để ánh xạ các cột bình thường (khơng phải khóa chính).
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34"><small><class name="hibernateexample.SinhVien" table="sinhvien"><id name="maSV" type="string"></small>
<small><column length="5" name="MaSV"/><generator class="assigned" /></id></small>
<small><property name="hoTen" type="string"><column length="25" name="HoTen" /></property></small>
<small><property name="gioiTinh" type="string"><column length="4" name="GioiTinh" /></property></small>
<small><property name="noiSinh" type="string"><column length="20" name="NoiSinh" /></property></small>
<small></hibernate-mapping></small>
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35"><b><small>35</small></b>
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36"><small>integerint hoặc IntegerINTEGERlonglong hoặc LongBIGINTshortshort hoặc ShortSMALLINTfloatfloat hoặc FloatFLOATdoubledouble hoặc DoubleDOUBLEbig_decimaljava.math.BigDecimalNUMERICcharacterStringCHAR(1)stringStringVARCHARbytebyte hoặc ByteTINYINTbooleanboolean hoặc BooleanBIT</small>
Các kiểu dữ liệu cơ bản
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">Các kiểu dữ liệu thời gian
<b><small>Kiểu HibernateKiểu JavaKiểu SQL</small></b>
<small>datejava.util.Date hoặc java.sql.DateDATEtimejava.util.Date hoặc java.sql.TimeTIME</small>
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38"><small>public class HibernateSessionFactory {</small>
<small>private static SessionFactory sesstionFac;</small>
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40"><small>public static List<SinhVien> getDSSinhVien(){List<SinhVien> dsSV = null;</small>
<small>Session session = </small>
<small>HibernateSessionFactory.getSessionFactory().openSession();try{</small>
<small>String sql = "select sv from SinhVien sv"; Query query = session.createQuery(sql); </small>
</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41"><small>public static boolean capNhatSV(SinhVien sv){ Session </small>
</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45"><b><small>Giảng viên: Tạ Việt PhươngE-mail: </small></b>
</div>