Tổng quan về Hibernate pdf

10 648 17
Tổng quan về Hibernate pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

Tổng quan về Hibernate 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 thờ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 phá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. I) 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. II) 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 thuộc tính được sử dụng để xác định tên lớp, và thuộc tính bản được sử dụng để xác định bảng mà lớp thay thế. Ví dụ để ánh xạ một bản mang tên ORDERS thành một persistence class với tên đầy đủ là com.someorg.persist.Order sẽ như dưới đây: <class name=”com.someorg.persist.Order” table=”ORDERS”>…</class> 2.3 ID: Thành phần này sử dụng để ánh xạ khóa chíh của table thành một instance variable của class. Thành phần cột con của id có thể sử dụng để ánh xạ thành biến tương ứng. Giá trị của khóa chính có thể tự động tạo ra được công bố ở đây. Thành phần generator có thể được sử dụng để nói cho Hibernate một lớp sẽ được sử dụng ở đâu để tự động tạo id, hoặc id được gán bởi ứng dụng. <id name="id" type="string" unsaved-value="null"> <column name="id" sql-type="char(32)" not-null="true"/> <generator class="assigned"/> </id> Ví dụ trên nói cho Hibernate rằng, tên của khóa chính là id mà nó đã được ánh xạ thành instance variable "id". Kiểu dữ liệu của nó là "string" được ánh xạ cho cột "id" có kiểu "char(32)" thay thế bởi thuộc tính sql-type. Thuộc ính lớp của generator chứa giá trị "assigned" nghĩa là ứng dụng bản thân nó sẽ cung cấp giá trị cho khóa chính. 2.4 Property: thành phần này, thuộc về các cột thành phần con của nó, ánh xạ những thuộc tính khác (hoặc các côt thành những instance variable của persistence class. Thuộc tính name của property chứa tên của biến như một giá trị. Thuộc tính name của thành phần column chứa tên của cột mà instance variable được ánh xạ. Các thuộc tính length và sql-type trỏ đến độ dài và kiểu dữ liệu của cột <property name="name"> <column name="name" sql-type="char(255)" not-null="true"/> </property> 3. Hibernate Configuration file: File này có thể được gọi trỏ đến ứng dụng sử dụng Hibernate. Nguyên nhân là nó chứa cấu hình điều khiển giao tiếp với database ở phía dưới. Ở đây, tất cả các file mapping được sử dụn bởi ứng dụng được công bố. Địnn dạng thành phần của hibernate-configuration là thành phần gốc. Hầu hết các thành phần thông dụng sử dụng trong file XML là: 3.1Property: Thuộc tính name của thành phần property có thể được sử dụng để cấu hình những tham số khác nhau. Trong công nghệ Hibernate, những tham số này được biết như là những tham số property. Kiểu database server (MySQL, Oracle ), dialect class, URL của database, username/password là những tham số property khác nhau. Để đặt chúng vào trong mã: <session-factory> <! Database connection settings > <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">jdbc:hsqldb:data/tutorial</property> <property name="connection.username">sa</property> : : </session-factory> 3.2 Mapping: Nó là thành phần kết nối tất cả các file mapping,, cũng gọi là các file hbm, được sử dụng bởi ứng dụng đã công bố. Thuộc tính resource được cho giá trị của đường dẫn file hbm. <mapping resource="Event.hbm.xml"/> IV)Ví dụ minh họa * Ví dụ xét một bảng Orders Cấu trúc như sau : CREATE TABLE ORDERS( ID VARCHAR NOT NULL PRIMARY KEY, ORDER_DATE TIMESTAMP NOT NULL, PRICE_TOTAL DOUBLE NOT NULL); * Bước kế tiếp là tạo ra persistence class (cũng chính là một JavaBean) package com.someorg.persist; import java.util.Date; import java.util.HashSet; import java.util.Set; public class Order { private String id; private Date date; private double priceTotal; // Automatically set the creation time of // this Order public Order() { this.date = new Date(); } public String getId() { return id; } public void setId(String string) { id = string; } // other getters/setters not shown for // brevity // } * Bước tiếp theo tạo file hbm. Tên của file là Order.hbm.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-mapping default-cascade="none" default-access="property" auto-import="true"> <class name=" com.someorg.persist.Order" table="orders" mutable="true" select- before- update="false" optimistic-lock="version"> <id name="id" type="string" unsaved-value="null"> <column name="id" sql-type="char(32)" not-null="true" /> <generator class="assigned" /> </id> <property name="date" not-null="false" > <column name="order_date" sql-type="datetime" not-null="true" /> </property> <property name="priceTotal" not-null="false" > <column name="price_total" sql-type="double" not-null="true" /> </property> * Tất cả các instance variable được ánh xạ sử dụng thành phần property. Đây là file cấu hình <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <! Database connection settings > <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="connection.url">jdbc:oracle:thin:@localhost: 1521:orcl </property> <property name="connection.username">scott</property> <property name="connection.password">tiger</property> <! JDBC connection pool (use the built-in) > <property name="connection.pool_size">1</property> <! SQL dialect > <property name="dialect"> org.hibernate.dialect.OracleDialect </property> <! Echo all executed SQL to stdout > <property name="show_sql">true</property> <mapping resource=" com/someorg/persist/Event.hbm.xml"/> </session-factory> </hibernate-configuration> * Test Ứng dụng : package test; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.someorg.persist.Order; // use as // java test. FindOrderById name public class FindOrderById { public static void main(String[] args) throws Exception { // query to issue String query = "select order from Order " + "where order.id=:id"; // search for what? String name = args[0]; // init Configuration cfg = new Configuration().addClass(Order.class); SessionFactory sf = cfg.buildSessionFactory(); // open session Session sess = sf.openSession(); // search and return List list = sess.find(query, id, Hibernate.STRING); if (list.size() == 0) { System.out.println("No Order having id " + id); System.exit(0); } Order o = (Order) list.get(0); sess.close(); System.out.println("Found Order: " + p); } } . Tổng quan về Hibernate 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à. encoding='utf-8'?> <!DOCTYPE hibernate- configuration PUBLIC "-/ /Hibernate/ Hibernate Configuration DTD 3.0//EN" "http:/ /hibernate. sourceforge.net /hibernate- configuration-3.0.dtd"> < ;hibernate- mapping

Ngày đăng: 06/03/2014, 16:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan