SlideShare a Scribd company logo
1 of 41
Download to read offline
BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA ....................................... 2 
I.  Lý thuyết .......................................................................................................................................... 2 
II.  Thí nghiệm ................................................................................................................................... 2 
Thời gian thực hiện thí nghiệm: 60 phút.............................................................................................. 2 
Tiến trình thực hiện: ............................................................................................................................. 2 
Phần 1: Tạo CSDL "mydatabase" ........................................................................................................ 2 
(0.1) Chạy máy chủ CSDL Java DB (Derby) nếu chưa được khởi động ........................................ 3 
(0.2) Tạo CSDL lấy tên là “mydatabase" (nếu trên máy bạn chưa có) ......................................... 3 
(0.3) Kiểm tra xem plug-in Hibernate đã được cài đặt chưa .......................................................... 5 
Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld" ....................................................................... 6 
(1.1) Tạo lớp POJO ............................................................................................................................. 7 
(1.2) Tạo file ánh xạ Hibernate cho các lớp POJO. ........................................................................ 12 
(1.3) Tạo file cấu hình Hibernate ..................................................................................................... 17 
(1.4) Tạo file Main.java và HibernateUtil.java............................................................................... 21 
(1.5) Thêm thư viện Hibernate và driver Java DB ........................................................................ 26 
(1.6) Thêm file log4j.properties ........................................................................................................ 29 
(1.7) Dịch và chạy ứng dụng ............................................................................................................. 32 
Tổng kết ............................................................................................................................................. 37 
Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2" .................................................................... 37 
(2.1) Tạo dự án "HibernateHelloWorld2" sao chép từ dự án "HibernateHelloWorld" ............ 37 
(2.2) Thêm lớp POJO mới ................................................................................................................ 39 
(2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student .............................................................. 40 
(2.4) Sửa file Main.java ..................................................................................................................... 41 
(2.5) Thay đổi file hibernate.cfg.xml ............................................................................................... 42 
(2.6) Dịch và chạy ứng dụng ............................................................................................................. 43 
(2.7) Nhận lệnh SQL từ Hibernate .................................................................................................. 44 
Tổng kết ............................................................................................................................................. 46 
Phần 3: Cấu hình Hibernate JavaDoc ................................................................................................. 46 
(3.1) Cấu hình thư mục Hibernate Javadoc cho NetBeans IDE ................................................... 46 
(3.2) Hiển thị Javadoc của giao diện Session Hibernate một cách trực quan .............................. 50 
Tổng kết ............................................................................................................................................. 51 
BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA
I.Lý thuyết
1. Hibernate là gì
Hibernate 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 phát triển các lớp (class) dùng để lưu trữ dữ liệu theo cách thức hướng đối tượng: kết hợp
(association), thừa kế (inheritance), đa hình (polymorphism), tổ hợp (composition) và tập hợp
(collections). Hibernate cho phép ta 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 tầng bền vững (persistence layer) khác, Hibernate không ẩn đi sức mạnh của
ngôn ngữ SQL mà Hibernate còn đảm bảo cho chúng ta việc đầ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 cấp phép theo
LGPL (Lesser GNU Public License). Theo đó, bạn có thể thoải mái sử dụng Hibernate trong các dự
án mã nguồn mở (open source) hoặc các dự án thương mại (commercial).
Hibernate là một dự án mã nguồn mở chuyên nghiệp và là một thành phần cốt tuỷ của bộ sản phẩm
JBoss Enterprise Middleware System (JEMS). JBoss, như chúng ta đã biết là một đơn vị của Red Hat,
chuyên cung cấp các dịch vụ 24x7 về hỗ trợ chuyên nghiệp, tư vấn và huấn luyện sẵn sàng hỗ trợ
trong việc dùng Hibernate.
Các thành phần của dự án Hibernate:
* Hibernate Core: Cung cấp các chức năng cơ bản của một tầng bền vững cho các ứng dụng Java với
các APIs và hỗ trợ ánh xạ XML metadata.
* Hibernate Annotations: Các lớp ánh xạ với JDK 5.0 annotations, bao gồm Hibernate Validator.
* Hibernate EntityManager: Sử dụng EJB 3.0 EntityManager API trong JSE hoặc với bất kỳ JEE
server nào.
* Hibernate Tools: Các công cụ tích hợp với Eclipse và Ant dùng cho việc sinh ra các đối tượng bền
vững (persistence object) từ một lược đồ có sẵn trong CSDL và từ các file hbm sinh ra các lớp java để
hiện thực các đối tượng bền vững, rồi Hibernate tự tạo các đối tượng trong CSDL.
* NHibernate: Hibernate cho .Net framework.
* JBoss Seam: Một Java EE 5.0 framework cho phát triển các ứng dụng JSF, Ajax và EJB 3.0 với sự
hỗ trợ của Hibernate. Seam khá mới và tỏ ra rất mạnh để phát triển các ứng dụng Web 2.0. Nó tích
hợp đầy đủ tất cả các công nghệ mới nhất hiện nay.
II. Thí nghiệm
Bài thí nghiệm hướng dẫn sinh viên các bước cơ bản xây dựng ứng dụng Hibernate HelloWorld. Trên cơ sở đó hiểu
được đầy đủ các khái niệm của Hibernate, cũng như cách hiển thị trực quan tài liệu Java trên các lớp của Hibernate.
Thời gian thực hiện thí nghiệm: 60 phút
Tiến trình thực hiện:
•Phần 1: Trên máy chủ CSDL (database server), tạo CSDL lấy tên “mydatabase”, thêm plug-in
Hibernate.
•Phần 2: Xây dựng ứng dụng Hibernate “HelloWorld” (20 phút)
•Phần 3: Xây dựng ứng dụng Hibernate “HelloWorld2” (20 phút)
•Phần 4: Cấu hình Javadoc cho Hibernate và hiển thị trực quan Javadoc
•Phần 5: Bài tập tự thí nghiệm
Phần 1: Tạo CSDL "mydatabase"
Sinh viên thực hiện tạo CSDL "mydatabase" trên máy theo thứ tự sau.
1. Chạy máy chủ CSDL Java DB (trong tài liệu có tên là Derby)
2. Tạo CSDL lấy tên là “mydatabase”
3. Cài đặt plug-in Hibernate cho NetBeans IDE (phiên bản 6.1 trở lên)
Dưới đây là hướng dẫn thực thi từng bước trên
(0.1) Chạy máy chủ CSDL Java DB (Derby) nếu chưa được khởi động
1. Chọn máy chủ Java DB. (như Hình-0.10)
• Kích chọn tab Services.
• Kích mở rộng vùng Databases.
• Kích chuột phải Java DB và chọn Start Server. Nếu đã chạy rồi mục chọn này sẽ bị chuyển sang
màu xám.
Hình-0.10: Chạy máy chủ CSDL
(0.2) Tạo CSDL lấy tên là “mydatabase" (nếu trên máy bạn chưa có)
1. Tạo CSDL
• Kích chuột phải vào Java DB và chọn Create Database. (Hình-0.20)
Hình-0.20: Tạo CSDL mydatabase
2. Điền vào các mục trong hộp thoại Create Java DB Database.
• Trong mục Database Name, gõ tên "mydatabase".
• Trong mục User name, gõ app.
• Mục Password, gõ "app". (như Hình-0.21)
• Kích OK để hoàn tất.
Hình-0.21: Tạo CSDL
3. Kết nối đến CSDL mydatabase. Chú ý là lúc này bạn chưa cần tạo các bảng biểu trong CSDL.
• Mở rộng mục Drivers.
• Kích chuột phải vào jdbc:derby://localhost:1527/mydatabase [app on App] và chọn Connect...
• Kích vào thẻ cửa sổ Projects để quay lại xem hiển thị của dự án (project)
(0.3) Kiểm tra xem plug-in Hibernate đã được cài đặt chưa
Nếu không thấy Hibernate trong danh sách các mục của thẻ Installed, điều đó có nghĩa là plug-in này chưa cài đặt
trong NetBeans IDE của bạn. Kích vào thẻ Available Plugins và lựa chọn Hibernate sau đó cài đặt bằng cách kích
vào Install.
Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld"
Trong phần này, sinh viên sẽ viết và chạy ứng dụng Hibernate khá đơn giản "HelloWorld". Trong ứng dụng này,
chúng ta sẽ làm việc với đối tượng Person kết nối CSDL thông qua Hibernate.
Các bước lần lượt thực hiện như sau:
1. Tạo lớp POJO, Person.java
2. Tạo file ánh xạ (mapping) cho lớp POJO, Write Hibernate mapping files for the POJO
classes, Person.hbm.xml in this example
3. Tạo file cấu hình cho Hibernate, hibernate.cfg.xml
4. Tạo file Main.java và HibernateUtil.java
5. Thêm thư viện Hibernate và Java DB
6. Thêm log4j.properties vào đường dẫn lớp
7. Dịch và chạy ứng dụng
8. Kiểm thử lại CSDL
(1.1) Tạo lớp POJO
Trong ứng dụng đơn giản này, chúng ta chỉ viết một lớp POJO. Ta sẽ đặt tên lớp là Person.java.
POJO là đại diện tiêu biểu cho lớp persistence. 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 biến thực thể (instance variable). Lớp persistence có những đặc điểm
dưới đây:
a. Nó là thay thế hướng đối tượng cho bảng ở cơ sở dữ liệu
b. Các thuộc tính của bảng trở thành những biến thực thể của lớp persistence.
c. Kiểu dữ liệu của biến thực thể là miền xác định của thuộc tính.
d. Đối tượng của lớp thay cho hàng của bảng.
1. Tạo dự án NetBeans
• Chọn File->New Project (hoặc Ctrl+Shift+N). (như Hình-1.11 dưới đây)
Hình-1.11: Tạo dự án mới
• Sau khi xuất hiện cửa sổ New Project.
• Trong cửa sổ nhỏ các bước công việc, thực hiện chọn Choose Project,
chọn Java dưới Categories và Java Application dưới Projects. (Hình-1.12)
• Sau đó kích chọn Next.
Hình-1.12: Tạo dự án ứng dụng Java
• Ở bước Name and Location , trong mục Project Name, gõ tên HibernateHelloWorld.
• Trong mục Create Main Class, gõ Main. (Hình-1.13 ở dưới)
• Kích Finish để hoàn tất.
Hình-1.13: Đặt tên cho dự án
• Bạn sẽ thấy cửa sổ dự án HibernateHelloWorld và IDE sinh ra cửa sổ sửa đổi mã nguồn của
Main.java của NetBeans IDE.
2. Xây dựng lớp Person.java như đoạn mã hiển thị trong Hình-1.14 dưới đây. Chú ý đây là lớp POJO.
• Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Java Class.
• Cửa sổ New Java Class xuất hiện.
• Trong mục Class Name, gõ Person.
• Bỏ trống mục Package. Nếu bạn muốn dùng package mặc định thì bỏ trống trường này. (Đối với
bài thí nghiệm đơn giản này chúng ta tạm sử dụng package mặc định.)
• Kích Finish để hoàn tất. (Hình-1.14)
Hình-1.14: Cửa sổ đặt Name and Location
• Sửa đổi đoạn mã nguồn Person.java như hình Code-1.15 dưới đây.
import java.io.Serializable;
public class Person implements Serializable {
private int id;
private String name;
protected Person() {
}
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Code-1.15: Person.java
(1.2) Tạo file ánh xạ Hibernate cho các lớp POJO.
Trong ứng dụng này do chỉ có 1 lớp Person, nên chúng ta chỉ phải viết một file ánh xạ. (Thực tế, một file ánh xạ
cũng có thể chứa các thông tin ánh xạ tới nhiều lớp trong ứng dụng nhưng để tránh nhầm lẫn ta nên viết từng file
ánh xạ cho mỗi lớp trong ứng dụng.)
1. Tạo file Person.hbm.xml.
Trong file ánh xạ này, bạn phải xác định lớp Person sẽ được ánh xạ tới bảng person. Trường id của lớp Person sẽ
được sử dụng như là khóa chính trong bảng CSDL person. Trường name sẽ tương ứng với cột cname.
• Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Other. (Hình-1.21)
Hình-1.21: Tạo file XML
• Xuất hiện cửa sổ Choose File Type.
• Chọn XML dưới phần Categories bên trái và XML Document dưới File Types bên phải. (Hình-
1.22)
• Kích Next.
Hình-1.22: Tạo tài liệu XML
• Cửa sổ Name and Location xuất hiện.
• Trong mục File Name, gõ Person.hbm. (Hình-1.23)
• Kích Browse để chọn Folder.
Hình-1.23: Xác định thư mục tạo file.
• Xuất hiện cửa sổ lựa chọn thư mục.
• Chọn src.
• Kích Select Folder. (Hình-1.24)
Hình-1.24: Chọn src
• Kích Next. (Hình-1.25)
Hình-1.25: Kích Next.
• Xuất hiện cửa sổ Select Document Type.
• Kích Finish để hoàn tất. (Hình-1.26)
Hình-1.26: Kết thúc quá trình tạo tài liệu XML
• Cửa sổ IDE sẽ hiển thị file XML để có thể thay đổi.
• Thay bằng đoạn mẫu XML như trong nội dung Code-1.27 ở dưới.
• Chú ý đoạn code in đậm.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Person" table="person">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="name" column="cname" type="string"/>
</class>
</hibernate-mapping>
Code-1.27: Person.hbm.xml
(1.3) Tạo file cấu hình Hibernate
File cấu hình dành riêng cho từng ứng dụng. Trong file này người lập trình phải xác định thông tin kết nối CSDL với
tên và file ánh xạ. Ngoại trừ tên của file ánh xạ, hầu hết các ứng dụng Hibernate có cùng tên với file cấu hình
Hibernate.
1. Tạo file hibernate.cfg.xml.
• Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->XML Document.
• Cửa sổ Name and Location xuất hiện.
• Trong trường File Name, gõ hibernate.cfg.
• Kích Browse chọn thư mục.
• Xuất hiện cửa sổ lựa chọn thư mục.
• Chọn nút src.
• Kích vào Select Folder.
• Kích Next (trong cửa sổ Name and Location).
• Xuất hiện cửa sổ Select Document Type
• Kích Finish để hoàn tất.
• Lúc này IDE sẽ hiển thị cửa sổ file XML để có thể thay đổi.
• Thay thế bằng đoạn file mẫu XML với nội dung như trong Code-1.31.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="connection.url">jdbc:derby://localhost:1527/mydatabase</property>
<property name="connection.username">app</property>
<property name="connection.password">app</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.DerbyDialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">false</property>
<!-- Mapping files -->
<mapping resource="Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Code-1.31: hibernate.cfg.xml
(1.4) Tạo file Main.java và HibernateUtil.java
1. Thay đổi nội dung của file Main.java trong IDE như đoạn mã nguồn trong Code-1.21. Chú ý ý nghĩa đoạn mã in
đậm.
Nếu không thêm các file thư viện Hibernate vào đường dẫn (classpath), IDE sẽ phát hiện ra một loạt các lỗi khi biên
dich (hộp màu đỏ). Phần sau sẽ hướng dẫn để thêm các thư viện này.
Trong phương thức main() của lớp Main, đối tượng lớp được khởi tạo và tiếp tục tồn tại thông qua đối tượng
Session của Hibernate.
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
public class Main {
public static void main(String[] args) {
// Set up database tables
HibernateUtil.droptable("drop table person");
HibernateUtil.setup("create table person ( id int, cname VARCHAR(20))");
// Create SessionFactory and Session object
SessionFactory sessions = new Configuration().configure().buildSessionFactory();
Session session = sessions.openSession();
// Perform life-cycle operations under a transaction
Transaction tx = null;
try {
tx = session.beginTransaction();
// Create a Person object and save it
Person p1 = new Person();
p1.setName("Sang Shin");
session.save(p1);
// Create another Person object and save it.
Person p2 = new Person();
p2.setName("Young Shin");
session.save(p2);
// Retrieve the person objects
Person person = (Person)session. get(Person.class, p1.getId());
System.out.println("First person retrieved = " + person.getName());
person = (Person)session.get(Person.class, p2.getId());
System.out.println("Second person retrieved = " + person.getName());
tx.commit();
tx = null;
} catch ( HibernateException e ) {
if ( tx != null ) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
// Display tables
HibernateUtil.checkData("select * from person");
}
}
Code-1.41: Person.hbm.xml
2. Viết file HibernateUtil.java như trong Code-1.42.
Đây là lớp tiện ích giúp người lập trình có thể kiểm thử và gỡ rối chương trình mình viết. Trong bài thí nghiệm này,
sinh viên sẽ được hướng dẫn sử dụng lớp tiện ích này để tạo và hiển thị bảng trong CSDL. Có thể sử dụng một cách
thuật tiện lớp tiện ích này cho các dự án Hibernate khác mà không cần quan tâm hiểu rõ đoạn mã của nó.
• Kích chuột phải nút dự án HibernateHelloWorld và chọn New->Java Class.
• Xuất hiện cửa sổ nhỏ Name and Location.
• Trong mục Class Name, gõ HibernateUtil. (Hình-1.42)
• Kích Finish để hoàn tất.
Hình-1.42: Tạo file HibernateUtil.java
• Thay thế đoạn mã file HibernateUtil.java bằng đoạn mã trong Code-1.43.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
// Database configuration
public static String url = "jdbc:derby://localhost:1527/mydatabase";
public static String dbdriver = "org.apache.derby.jdbc.ClientDriver";
public static String username = "app";
public static String password = "app";
public static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this thread has none yet
if (s == null) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
if (s != null)
s.close();
session.set(null);
}
static Connection conn;
static Statement st;
public static void setup(String sql) {
try {
createStatement();
st.executeUpdate(sql);
} catch (Exception e) {
System.err.println("Got an exception! ");
e.printStackTrace();
System.exit(0);
}
}
public static void createStatement() {
try {
Class.forName(dbdriver);
conn = DriverManager.getConnection(url, username, password);
st = conn.createStatement();
} catch (Exception e) {
System.err.println("Got an exception! ");
e.printStackTrace();
System.exit(0);
}
}
// Drop table if exists
public static void droptable(String sql) {
try {
createStatement();
st.executeUpdate(sql);
} catch (Exception e) {
}
}
public static void checkData(String sql) {
String[] starray = sql.split(" ");
System.out.println("n******** Table: " + starray[starray.length-1] + " *******");
try {
createStatement();
ResultSet r = st.executeQuery(sql);
HibernateUtil.outputResultSet(r);
// conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void outputResultSet(ResultSet rs) throws Exception{
ResultSetMetaData metadata = rs.getMetaData();
int numcols = metadata.getColumnCount();
String[] labels = new String[numcols];
int[] colwidths = new int[numcols];
int[] colpos = new int[numcols];
int linewidth;
linewidth = 1;
for (int i = 0; i < numcols; i++) {
colpos[i] = linewidth;
labels[i] = metadata.getColumnLabel(i + 1); // get its label
int size = metadata.getColumnDisplaySize(i + 1);
if (size > 30 || size == -1)
size = 30;
int labelsize = labels[i].length();
if (labelsize > size)
size = labelsize;
colwidths[i] = size + 1; // save the column the size
linewidth += colwidths[i] + 2; // increment total size
}
StringBuffer divider = new StringBuffer(linewidth);
StringBuffer blankline = new StringBuffer(linewidth);
for (int i = 0; i < linewidth; i++) {
divider.insert(i, '-');
blankline.insert(i, " ");
}
// Put special marks in the divider line at the column positions
for (int i = 0; i < numcols; i++)
divider.setCharAt(colpos[i] - 1, '+');
divider.setCharAt(linewidth - 1, '+');
// Begin the table output with a divider line
System.out.println(divider);
// The next line of the table contains the column labels.
// Begin with a blank line, and put the column names and column
// divider characters "|" into it. overwrite() is defined below.
StringBuffer line = new StringBuffer(blankline.toString());
line.setCharAt(0, '|');
for (int i = 0; i < numcols; i++) {
int pos = colpos[i] + 1 + (colwidths[i] - labels[i].length()) / 2;
overwrite(line, pos, labels[i]);
overwrite(line, colpos[i] + colwidths[i], " |");
}
System.out.println(line);
System.out.println(divider);
while (rs.next()) {
line = new StringBuffer(blankline.toString());
line.setCharAt(0, '|');
for (int i = 0; i < numcols; i++) {
Object value = rs.getObject(i + 1);
if (value != null){
overwrite(line, colpos[i] + 1, value.toString().trim());
overwrite(line, colpos[i] + colwidths[i], " |");
}
}
System.out.println(line);
}
System.out.println(divider);
}
static void overwrite(StringBuffer b, int pos, String s) {
int len = s.length();
for (int i = 0; i < len; i++)
b.setCharAt(pos + i, s.charAt(i));
}
}
Code-1.43: HibernateUtil.java
(1.5) Thêm thư viện Hibernate và driver Java DB
1. Kích chuột phải vào dự án HibernateHelloWorld và chọn Properties. (Hình-1.61)
Hình-1.61: Chọn Properties của dự án
2. Thêm thư viện Hibernate
• Chọn Libraries dưới phần Categories phía bên trái và chọn nút Add Library phía bên phải.
(Hình-1.62)
Hình-1.62: Chọn Add Library
• Chọn thư viện Hibernate.
• Kích nút Add Library. (Hình-1.63)
Hình-1.63: Thêm thư viện HibernateCore
3. Thêm driver Java DB. (Nếu dùng phiên bản NetBeans 6.7.1 – sẽ có lỗi vì driver này sẽ không xuất hiện trong
danh sách, người dùng phải tự thêm vào).
(1.6) Thêm file log4j.properties
Đây là phần không bắt buộc. Nếu chưa có file log4j.properties trong đường dẫn của dự án, bạn sẽ nhận được một
thông báo cảnh báo, tạm thời lúc này ta không cần để ý đến chúng.
1. Thêm file log4j.properties.
• Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Other.
• Chọn Other dưới phần Categories phía bên trái và Empty File dưới File Types phía bên phải.
• Kích Next.
• Xuất hiện cửa sổ Name and Location.
• Trong trường File Name, gõ log4j.properties.
• Kích Browse lựa chọn thư mục.
• Xuất hiện cửa sổ lựa chọn thư mục.
• Chọn src.
• Kích Select Folder.
• Kích Finish để hoàn tất.
• Một file chưa có nội dung sẽ xuất hiện trong cửa sổ IDE.
• Gõ nội dung như trong Code-1.71 vào file đó.
#
# Log4J Settings for log4j 1.2.x (via jakarta-commons-logging)
#
# The five logging levels used by Log are (in order):
#
# 1. DEBUG (the least serious)
# 2. INFO
# 3. WARN
# 4. ERROR
# 5. FATAL (the most serious)
# Set root logger level to WARN and append to stdout
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL
# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.com.opensymphony.webwork=DEBUG
# Spring Stuff
log4j.logger.org.springframework=INFO
Code-1.71: File log4j.properties
(1.7) Dịch và chạy ứng dụng
Lúc này ta đã sẵn sang để dịch và chạy ứng dụng.
1. Kích chuột phải vào dự án HibernateHelloWorld và chọn Run. (Hình-1.81)
Hình-1.81: Chạy dự án
2. Cửa sổ Output của IDE sẽ có dạng như Hình-1.82. Phần đầu là kết quả thông qua Hinernate và
phần thứ hai hiển thị các dòng trong bảng person.
3.
Hình-1.82: Kết quả thực hiện các thao tác CSDL thông qua Hibernate
Sự cố: Nếu sinh viên nhận được cửa sổ lỗi như dưới đây thì chủ yếu là do máy chủ CSDL chưa chạy.
15 [main] WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection metadata
org.apache.derby.client.am.DisconnectException: java.security.PrivilegedActionException : Error opening socket to
server localhost on port 1527 with message : null
at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
at org.apache.derby.client.am.Connection.<init>(Unknown Source)
at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at
org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
at HibernateUtil.<clinit>(HibernateUtil.java:26)
at Main.main(Main.java:9)
Got an exception!
Xử lý: Khởi động máy chủ CSDL như hướng dẫn ở Phần 1.
Sự cố: Nếu thấy đoạn lỗi sau trong cửa sổ Output, chủ yếu do driver của máy khách (client), derbyclient.jar cho
CSDL Derby, chứ không phải vấn đề đường dẫn (classpath).
Initial SessionFactory creation failed.org.hibernate.HibernateException: JDBC Driver class not found:
org.apache.derby.jdbc.ClientDriver
Exception in thread "main" java.lang.ExceptionInInitializerError
at HibernateUtil.<clinit>(HibernateUtil.java:30)
at Main.main(Main.java:9)
Caused by: org.hibernate.HibernateException: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver
at
org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:397)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)
at HibernateUtil.<clinit>(HibernateUtil.java:26)
... 1 more
Xử lý: Thêm driver derbyclient.jar, vào đường dẫn như mô tả trong Bước 1.5.
(1.8) Kiểm thử lại CSDL
Trong bước này ta sẽ kiểm tra lại xem bảng person thực tế có cư ngụ trong lớp Main.
1. Chọn thẻ cửa sổ Services.
2. Mở rộng mục Databases.
3. Kích chuột phải vào jdbc:derby://localhost:1527/mydatabase [app on APP] và chọn Connect (nếu chưa ở
trạng thái đã được kết nối). (Hình-1.91)
Hình-1.91: Kết nối với CSDL
4. Mở rộng APP->Tables.
5. Kích chuột phải vào bảng PERSON và chọn View Data. (Hình-1.92)
Hình-1.92: Xem dữ liệu trong bảng PERSON
6. Ta sẽ nhận thấy có 2 dòng trong bảng PERSON. (Hình-1.93)
Hình-1.93: Kiểm tra lại nội dung của bảng trong CSDL.
Tổng kết
Trong phần này, sinh viên được học cách để xây dựng ứng dụng Hibernate HelloWorld đơn giản từ các lớp của ứng
dụng, các file ánh xạ tương ứng và file cấu hình Hibernate.
Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2"
Trong phần này, sinh viên sẽ được hướng dẫn tạo dự án mới HibernateHelloWorld2 thông qua việc sao
chép lại dự án đã thực hiện trong Phần 1 HibernateHelloWorld. Nếu sao chép một dự án, toàn bộ file thư
viện Hibernate sẽ tự động được sao chép vào dự án mới. Sinh viên cũng có thể thêm lớp POJO khác và file
ánh xạ của nó vào dự án mới.
1. Tạo dự án "HibernateHelloWorld2" thông qua việc sao chép dự án "HibernateHelloWorld" project
2. Thêm lớp POJO mới, Student.java
3. Viết file ánh xạ, Student.hbm.xml
4. Thay đổi hibernate.cfg.xml
5. Thay đổi Main.java
6. Dịch và chạy dự án
7. Nhận lệnh SQL do Hibernate gửi
(2.1) Tạo dự án "HibernateHelloWorld2" sao chép từ dự án "HibernateHelloWorld"
1. Kích chuột phải vào nút dự án HibernateHelloWorld chọn Copy. (Hình-2.10)
Hình-2.10: Sao chép dự án Project
2. Đặt tên cho dự án mới.
• Hộp thoại Copy Project xuất hiện.
• Trong trường Project Name gõ tên HibernateHelloWorld2.
• Kích chuột vào Copy. (Hinh-2.11)
Hình-2.11: Sao chép dự án
• Xuất hiện nút dự án HibernateHelloWorld2.
(2.2) Thêm lớp POJO mới
Trong bước này ta thêm lớp POJO mới đặt tên là Student.
1. Viết Student.java.
import java.io.Serializable;
public class Student implements Serializable {
private int id;
private String school;
private String grade;
protected Student() {
}
public Student(int id, String school) {
this.id = id;
this.school = school;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSchool() {
return school;
}
public void setSchool(String name) {
this.school = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
Code-2.21: Student.java
(2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student
1. Viết file Student.hbm.xml như trong Code-2.31.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Student" table="student">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="school" column="schoolname" type="string"/>
<property name="grade" column="grade" type="string"/>
</class>
</hibernate-mapping>
Code-2.31: Student.hbm.xml
http://bit.ly/KhoTaiLieuAZ

More Related Content

What's hot

Bài 1: Giới thiệu Android
Bài 1: Giới thiệu AndroidBài 1: Giới thiệu Android
Bài 1: Giới thiệu Android
hoccungdoanhnghiep
 
Slide thuyet trinh android
Slide thuyet trinh androidSlide thuyet trinh android
Slide thuyet trinh android
kuto92love
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
Nguyen Tran
 

What's hot (20)

luan van thac si xay dung ung dung android xem truyen tranh online
luan van thac si xay dung ung dung android xem truyen tranh onlineluan van thac si xay dung ung dung android xem truyen tranh online
luan van thac si xay dung ung dung android xem truyen tranh online
 
Bài tập lớn
Bài tập lớnBài tập lớn
Bài tập lớn
 
Luận văn: Tìm hiểu công nghệ GPS trong quản lý lái xe, HOT
Luận văn: Tìm hiểu công nghệ GPS trong quản lý lái xe, HOTLuận văn: Tìm hiểu công nghệ GPS trong quản lý lái xe, HOT
Luận văn: Tìm hiểu công nghệ GPS trong quản lý lái xe, HOT
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAYĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HAY
 
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin TứcBáo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
 
Bài 1: Giới thiệu Android
Bài 1: Giới thiệu AndroidBài 1: Giới thiệu Android
Bài 1: Giới thiệu Android
 
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTTSlide Báo Cáo Đồ Án Tốt Nghiệp CNTT
Slide Báo Cáo Đồ Án Tốt Nghiệp CNTT
 
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minhĐề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
Đề tài: Ứng dụng xử lý ảnh thiết kế mạch chống trộm thông minh
 
Bao cao wesite bán giày.docx
Bao cao wesite bán giày.docxBao cao wesite bán giày.docx
Bao cao wesite bán giày.docx
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
Ptit mô phỏng hệ thống truyền thông slide
Ptit mô phỏng hệ thống truyền thông slidePtit mô phỏng hệ thống truyền thông slide
Ptit mô phỏng hệ thống truyền thông slide
 
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
 
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSSĐề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
Đề tài: Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS
 
ĐỒ ÁN XÂY DỰNG WEBSITE BÁN HÀNG BẰNG WORDPRESS
ĐỒ ÁN XÂY DỰNG WEBSITE BÁN HÀNG BẰNG WORDPRESSĐỒ ÁN XÂY DỰNG WEBSITE BÁN HÀNG BẰNG WORDPRESS
ĐỒ ÁN XÂY DỰNG WEBSITE BÁN HÀNG BẰNG WORDPRESS
 
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơnKĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
Kĩ thuật lọc ảnh và ứng dụng trong lọc nhiễu làm trơn
 
Slide thuyet trinh android
Slide thuyet trinh androidSlide thuyet trinh android
Slide thuyet trinh android
 
Android OS
Android OSAndroid OS
Android OS
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Hướng dẫn sử dụng YOLO v5.pptx
Hướng dẫn sử dụng YOLO v5.pptxHướng dẫn sử dụng YOLO v5.pptx
Hướng dẫn sử dụng YOLO v5.pptx
 
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
[Báo cáo] Bài tập lớn Cơ sở truyền số liệu
 

Similar to BÀI THÍ NGHIỆM SỐ XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA_10441312092019

Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
Văn Dũng
 
Lập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất NghệLập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất Nghệ
Trần Thiên Đại
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
Ham Chơi
 
Core java 2
Core java 2Core java 2
Core java 2
. .
 

Similar to BÀI THÍ NGHIỆM SỐ XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA_10441312092019 (20)

Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
 
Lập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất NghệLập trình C# 2008 cơ bản_Nhất Nghệ
Lập trình C# 2008 cơ bản_Nhất Nghệ
 
Thutap
ThutapThutap
Thutap
 
Tim+hieu+jquery
Tim+hieu+jqueryTim+hieu+jquery
Tim+hieu+jquery
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
J query
J queryJ query
J query
 
jquery.pdf
jquery.pdfjquery.pdf
jquery.pdf
 
Giao Trinh Jquery
Giao Trinh JqueryGiao Trinh Jquery
Giao Trinh Jquery
 
Gioi thieu ve_java
Gioi thieu ve_javaGioi thieu ve_java
Gioi thieu ve_java
 
gioi thieu ve java
gioi thieu ve javagioi thieu ve java
gioi thieu ve java
 
Hoc Jquery Trong 1h
Hoc Jquery Trong 1hHoc Jquery Trong 1h
Hoc Jquery Trong 1h
 
Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952Bai1 gioi thieu_servlet_va_jsp_8952
Bai1 gioi thieu_servlet_va_jsp_8952
 
Php cơ bản của trung tâm hocweb.com.vn
Php cơ bản của trung tâm hocweb.com.vnPhp cơ bản của trung tâm hocweb.com.vn
Php cơ bản của trung tâm hocweb.com.vn
 
Asp.net 3.5 _7
Asp.net 3.5 _7Asp.net 3.5 _7
Asp.net 3.5 _7
 
Mo hinh-3-lop
Mo hinh-3-lopMo hinh-3-lop
Mo hinh-3-lop
 
Cac bai tap .net
Cac bai tap .netCac bai tap .net
Cac bai tap .net
 
Bai4 basic jsp_4474
Bai4 basic jsp_4474Bai4 basic jsp_4474
Bai4 basic jsp_4474
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
 
Core java 2
Core java 2Core java 2
Core java 2
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 

More from TiLiu5

More from TiLiu5 (20)

CẨM NANG THAO TÁC CƠ SỞ DỮ LIỆU DIỄN BIẾN RỪNG (CHO CHI CỤC KIỂM LÂM)_1055501...
CẨM NANG THAO TÁC CƠ SỞ DỮ LIỆU DIỄN BIẾN RỪNG (CHO CHI CỤC KIỂM LÂM)_1055501...CẨM NANG THAO TÁC CƠ SỞ DỮ LIỆU DIỄN BIẾN RỪNG (CHO CHI CỤC KIỂM LÂM)_1055501...
CẨM NANG THAO TÁC CƠ SỞ DỮ LIỆU DIỄN BIẾN RỪNG (CHO CHI CỤC KIỂM LÂM)_1055501...
 
CẨM NANG Tháng 12 năm 2014 HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON B...
CẨM NANG Tháng 12 năm 2014 HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON B...CẨM NANG Tháng 12 năm 2014 HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON B...
CẨM NANG Tháng 12 năm 2014 HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON B...
 
CẨM NANG TƯ VẤN TUYỂN SINH TRƯỜNG ĐẠI HỌC VINH_10554612092019
CẨM NANG TƯ VẤN TUYỂN SINH TRƯỜNG ĐẠI HỌC VINH_10554612092019CẨM NANG TƯ VẤN TUYỂN SINH TRƯỜNG ĐẠI HỌC VINH_10554612092019
CẨM NANG TƯ VẤN TUYỂN SINH TRƯỜNG ĐẠI HỌC VINH_10554612092019
 
CẨM NANG KHÓA TU HỌC HÀM THỤ BẬC LỰC I HẢI NGOẠI_10553312092019
CẨM NANG KHÓA TU HỌC HÀM THỤ BẬC LỰC I HẢI NGOẠI_10553312092019CẨM NANG KHÓA TU HỌC HÀM THỤ BẬC LỰC I HẢI NGOẠI_10553312092019
CẨM NANG KHÓA TU HỌC HÀM THỤ BẬC LỰC I HẢI NGOẠI_10553312092019
 
Cẩm nang kỹ thuật về camera IP Đầu ghi hình Hikvision_10553112092019
Cẩm nang kỹ thuật về camera IP Đầu ghi hình Hikvision_10553112092019Cẩm nang kỹ thuật về camera IP Đầu ghi hình Hikvision_10553112092019
Cẩm nang kỹ thuật về camera IP Đầu ghi hình Hikvision_10553112092019
 
Cẩm nang kinh doanh tại Việt Nam_10552912092019
Cẩm nang kinh doanh tại Việt Nam_10552912092019Cẩm nang kinh doanh tại Việt Nam_10552912092019
Cẩm nang kinh doanh tại Việt Nam_10552912092019
 
CẨM NANG HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON BẰNG SỮA MẸ TẠI NƠI...
CẨM NANG HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON BẰNG SỮA MẸ TẠI NƠI...CẨM NANG HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON BẰNG SỮA MẸ TẠI NƠI...
CẨM NANG HƯỚNG DẪN THỰC HIỆN CHƯƠNG TRÌNH HỖ TRỢ NUÔI CON BẰNG SỮA MẸ TẠI NƠI...
 
Cẩm nang HỘI NHẬP KINH TẾ QUỐC TẾ HIỆP ĐỊNH THƯƠNG MẠI TỰDO VIỆT NAM - HÀN QU...
Cẩm nang HỘI NHẬP KINH TẾ QUỐC TẾ HIỆP ĐỊNH THƯƠNG MẠI TỰDO VIỆT NAM - HÀN QU...Cẩm nang HỘI NHẬP KINH TẾ QUỐC TẾ HIỆP ĐỊNH THƯƠNG MẠI TỰDO VIỆT NAM - HÀN QU...
Cẩm nang HỘI NHẬP KINH TẾ QUỐC TẾ HIỆP ĐỊNH THƯƠNG MẠI TỰDO VIỆT NAM - HÀN QU...
 
CẨM NANG HỌC TẬP & NGHIÊN CỨU DÀNH CHO NGHIÊN CỨU SINH_10552012092019
CẨM NANG HỌC TẬP & NGHIÊN CỨU DÀNH CHO NGHIÊN CỨU SINH_10552012092019CẨM NANG HỌC TẬP & NGHIÊN CỨU DÀNH CHO NGHIÊN CỨU SINH_10552012092019
CẨM NANG HỌC TẬP & NGHIÊN CỨU DÀNH CHO NGHIÊN CỨU SINH_10552012092019
 
Cẩm Nang Học Sinh Student Handbook & Nội Quy về Hạnh Kiểm Học Sinh_1055181209...
Cẩm Nang Học Sinh Student Handbook & Nội Quy về Hạnh Kiểm Học Sinh_1055181209...Cẩm Nang Học Sinh Student Handbook & Nội Quy về Hạnh Kiểm Học Sinh_1055181209...
Cẩm Nang Học Sinh Student Handbook & Nội Quy về Hạnh Kiểm Học Sinh_1055181209...
 
Cẩm Nang Hạnh Phúc Gia Đình Kitô - D. Wahrheit_10551612092019
Cẩm Nang Hạnh Phúc Gia Đình Kitô - D. Wahrheit_10551612092019Cẩm Nang Hạnh Phúc Gia Đình Kitô - D. Wahrheit_10551612092019
Cẩm Nang Hạnh Phúc Gia Đình Kitô - D. Wahrheit_10551612092019
 
CẨM NANG HẠCH TOÁNH CHI PHÍ DÒNG NGUYÊN LIỆU THEO TIÊU CHUẨN ISO 14051_105514...
CẨM NANG HẠCH TOÁNH CHI PHÍ DÒNG NGUYÊN LIỆU THEO TIÊU CHUẨN ISO 14051_105514...CẨM NANG HẠCH TOÁNH CHI PHÍ DÒNG NGUYÊN LIỆU THEO TIÊU CHUẨN ISO 14051_105514...
CẨM NANG HẠCH TOÁNH CHI PHÍ DÒNG NGUYÊN LIỆU THEO TIÊU CHUẨN ISO 14051_105514...
 
CẨM NANG Đội công tác xã hội tình nguyện_10550812092019
CẨM NANG Đội công tác xã hội tình nguyện_10550812092019CẨM NANG Đội công tác xã hội tình nguyện_10550812092019
CẨM NANG Đội công tác xã hội tình nguyện_10550812092019
 
CẨM NANG CHÍNH SÁCH VÀ THỦ TỤC HÀNH CHÍNH CẦN THIẾT DÀNH CHO KIỀU BÀO_1055011...
CẨM NANG CHÍNH SÁCH VÀ THỦ TỤC HÀNH CHÍNH CẦN THIẾT DÀNH CHO KIỀU BÀO_1055011...CẨM NANG CHÍNH SÁCH VÀ THỦ TỤC HÀNH CHÍNH CẦN THIẾT DÀNH CHO KIỀU BÀO_1055011...
CẨM NANG CHÍNH SÁCH VÀ THỦ TỤC HÀNH CHÍNH CẦN THIẾT DÀNH CHO KIỀU BÀO_1055011...
 
CẨM NANG CHẨN ĐOÁN LÂM SÀNG BỆNH BÒ SỮA_10545912092019
CẨM NANG CHẨN ĐOÁN LÂM SÀNG BỆNH BÒ SỮA_10545912092019CẨM NANG CHẨN ĐOÁN LÂM SÀNG BỆNH BÒ SỮA_10545912092019
CẨM NANG CHẨN ĐOÁN LÂM SÀNG BỆNH BÒ SỮA_10545912092019
 
CẨM NANG CỦA NGƯỜI PHẬT TỬ Tập 3_10545712092019
CẨM NANG CỦA NGƯỜI PHẬT TỬ Tập 3_10545712092019CẨM NANG CỦA NGƯỜI PHẬT TỬ Tập 3_10545712092019
CẨM NANG CỦA NGƯỜI PHẬT TỬ Tập 3_10545712092019
 
CẢM NHẬN Về những giá trị văn hóa - lịch sử trong tác phẩm của nhà văn Hoàng ...
CẢM NHẬN Về những giá trị văn hóa - lịch sử trong tác phẩm của nhà văn Hoàng ...CẢM NHẬN Về những giá trị văn hóa - lịch sử trong tác phẩm của nhà văn Hoàng ...
CẢM NHẬN Về những giá trị văn hóa - lịch sử trong tác phẩm của nhà văn Hoàng ...
 
CẢI CÁCH HÀNH CHÍNH VIỆT NAM HIỂU & NGHĨ NÓI & LÀM_10544412092019
CẢI CÁCH HÀNH CHÍNH VIỆT NAM HIỂU & NGHĨ NÓI & LÀM_10544412092019CẢI CÁCH HÀNH CHÍNH VIỆT NAM HIỂU & NGHĨ NÓI & LÀM_10544412092019
CẢI CÁCH HÀNH CHÍNH VIỆT NAM HIỂU & NGHĨ NÓI & LÀM_10544412092019
 
Cải cách & tư duy lại_10544212092019
Cải cách & tư duy lại_10544212092019Cải cách & tư duy lại_10544212092019
Cải cách & tư duy lại_10544212092019
 
CÁC YẾU TỐ TÁC ĐỘNG ĐẾN KẾT QUẢ HỌC TẬP CỦA HỌC SINH TRUNG HỌC PHỔ THÔNG THÀN...
CÁC YẾU TỐ TÁC ĐỘNG ĐẾN KẾT QUẢ HỌC TẬP CỦA HỌC SINH TRUNG HỌC PHỔ THÔNG THÀN...CÁC YẾU TỐ TÁC ĐỘNG ĐẾN KẾT QUẢ HỌC TẬP CỦA HỌC SINH TRUNG HỌC PHỔ THÔNG THÀN...
CÁC YẾU TỐ TÁC ĐỘNG ĐẾN KẾT QUẢ HỌC TẬP CỦA HỌC SINH TRUNG HỌC PHỔ THÔNG THÀN...
 

Recently uploaded

Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Kabala
 

Recently uploaded (20)

ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Trích dẫn theo Harvard với Microsoft Word
Trích dẫn theo Harvard với Microsoft WordTrích dẫn theo Harvard với Microsoft Word
Trích dẫn theo Harvard với Microsoft Word
 
các nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emcác nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ em
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
PHIẾU KHẢO SÁT MỨC ĐỘ HÀI LÒNG VỀ CHẤT LƯỢNG DỊCH VỤ VẬN CHUYỂN HÀNG KHÁCH BẰ...
PHIẾU KHẢO SÁT MỨC ĐỘ HÀI LÒNG VỀ CHẤT LƯỢNG DỊCH VỤ VẬN CHUYỂN HÀNG KHÁCH BẰ...PHIẾU KHẢO SÁT MỨC ĐỘ HÀI LÒNG VỀ CHẤT LƯỢNG DỊCH VỤ VẬN CHUYỂN HÀNG KHÁCH BẰ...
PHIẾU KHẢO SÁT MỨC ĐỘ HÀI LÒNG VỀ CHẤT LƯỢNG DỊCH VỤ VẬN CHUYỂN HÀNG KHÁCH BẰ...
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
 
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
GIỮ GÌN VÀ PHÁT HUY GIÁ TRỊ MỘT SỐ BÀI HÁT DÂN CA CÁC DÂN TỘC BẢN ĐỊA CHO HỌC...
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 11 - CÁN...
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa họcChương 6: Dân tộc - Chủ nghĩa xã hội khoa học
Chương 6: Dân tộc - Chủ nghĩa xã hội khoa học
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
 
Tiểu luận tổng quan về Mối quan hệ giữa chu kỳ kinh tế và đầu tư trong nền ki...
Tiểu luận tổng quan về Mối quan hệ giữa chu kỳ kinh tế và đầu tư trong nền ki...Tiểu luận tổng quan về Mối quan hệ giữa chu kỳ kinh tế và đầu tư trong nền ki...
Tiểu luận tổng quan về Mối quan hệ giữa chu kỳ kinh tế và đầu tư trong nền ki...
 

BÀI THÍ NGHIỆM SỐ XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA_10441312092019

  • 1. BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA ....................................... 2  I.  Lý thuyết .......................................................................................................................................... 2  II.  Thí nghiệm ................................................................................................................................... 2  Thời gian thực hiện thí nghiệm: 60 phút.............................................................................................. 2  Tiến trình thực hiện: ............................................................................................................................. 2  Phần 1: Tạo CSDL "mydatabase" ........................................................................................................ 2  (0.1) Chạy máy chủ CSDL Java DB (Derby) nếu chưa được khởi động ........................................ 3  (0.2) Tạo CSDL lấy tên là “mydatabase" (nếu trên máy bạn chưa có) ......................................... 3  (0.3) Kiểm tra xem plug-in Hibernate đã được cài đặt chưa .......................................................... 5  Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld" ....................................................................... 6  (1.1) Tạo lớp POJO ............................................................................................................................. 7  (1.2) Tạo file ánh xạ Hibernate cho các lớp POJO. ........................................................................ 12  (1.3) Tạo file cấu hình Hibernate ..................................................................................................... 17  (1.4) Tạo file Main.java và HibernateUtil.java............................................................................... 21  (1.5) Thêm thư viện Hibernate và driver Java DB ........................................................................ 26  (1.6) Thêm file log4j.properties ........................................................................................................ 29  (1.7) Dịch và chạy ứng dụng ............................................................................................................. 32  Tổng kết ............................................................................................................................................. 37  Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2" .................................................................... 37  (2.1) Tạo dự án "HibernateHelloWorld2" sao chép từ dự án "HibernateHelloWorld" ............ 37  (2.2) Thêm lớp POJO mới ................................................................................................................ 39  (2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student .............................................................. 40  (2.4) Sửa file Main.java ..................................................................................................................... 41  (2.5) Thay đổi file hibernate.cfg.xml ............................................................................................... 42  (2.6) Dịch và chạy ứng dụng ............................................................................................................. 43  (2.7) Nhận lệnh SQL từ Hibernate .................................................................................................. 44  Tổng kết ............................................................................................................................................. 46  Phần 3: Cấu hình Hibernate JavaDoc ................................................................................................. 46  (3.1) Cấu hình thư mục Hibernate Javadoc cho NetBeans IDE ................................................... 46  (3.2) Hiển thị Javadoc của giao diện Session Hibernate một cách trực quan .............................. 50  Tổng kết ............................................................................................................................................. 51 
  • 2. BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA I.Lý thuyết 1. Hibernate là gì Hibernate 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 phát triển các lớp (class) dùng để lưu trữ dữ liệu theo cách thức hướng đối tượng: kết hợp (association), thừa kế (inheritance), đa hình (polymorphism), tổ hợp (composition) và tập hợp (collections). Hibernate cho phép ta 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 tầng bền vững (persistence layer) khác, Hibernate không ẩn đi sức mạnh của ngôn ngữ SQL mà Hibernate còn đảm bảo cho chúng ta việc đầ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 cấp phép theo LGPL (Lesser GNU Public License). Theo đó, bạn có thể thoải mái sử dụng Hibernate trong các dự án mã nguồn mở (open source) hoặc các dự án thương mại (commercial). Hibernate là một dự án mã nguồn mở chuyên nghiệp và là một thành phần cốt tuỷ của bộ sản phẩm JBoss Enterprise Middleware System (JEMS). JBoss, như chúng ta đã biết là một đơn vị của Red Hat, chuyên cung cấp các dịch vụ 24x7 về hỗ trợ chuyên nghiệp, tư vấn và huấn luyện sẵn sàng hỗ trợ trong việc dùng Hibernate. Các thành phần của dự án Hibernate: * Hibernate Core: Cung cấp các chức năng cơ bản của một tầng bền vững cho các ứng dụng Java với các APIs và hỗ trợ ánh xạ XML metadata. * Hibernate Annotations: Các lớp ánh xạ với JDK 5.0 annotations, bao gồm Hibernate Validator. * Hibernate EntityManager: Sử dụng EJB 3.0 EntityManager API trong JSE hoặc với bất kỳ JEE server nào. * Hibernate Tools: Các công cụ tích hợp với Eclipse và Ant dùng cho việc sinh ra các đối tượng bền vững (persistence object) từ một lược đồ có sẵn trong CSDL và từ các file hbm sinh ra các lớp java để hiện thực các đối tượng bền vững, rồi Hibernate tự tạo các đối tượng trong CSDL. * NHibernate: Hibernate cho .Net framework. * JBoss Seam: Một Java EE 5.0 framework cho phát triển các ứng dụng JSF, Ajax và EJB 3.0 với sự hỗ trợ của Hibernate. Seam khá mới và tỏ ra rất mạnh để phát triển các ứng dụng Web 2.0. Nó tích hợp đầy đủ tất cả các công nghệ mới nhất hiện nay. II. Thí nghiệm Bài thí nghiệm hướng dẫn sinh viên các bước cơ bản xây dựng ứng dụng Hibernate HelloWorld. Trên cơ sở đó hiểu được đầy đủ các khái niệm của Hibernate, cũng như cách hiển thị trực quan tài liệu Java trên các lớp của Hibernate. Thời gian thực hiện thí nghiệm: 60 phút Tiến trình thực hiện: •Phần 1: Trên máy chủ CSDL (database server), tạo CSDL lấy tên “mydatabase”, thêm plug-in Hibernate. •Phần 2: Xây dựng ứng dụng Hibernate “HelloWorld” (20 phút) •Phần 3: Xây dựng ứng dụng Hibernate “HelloWorld2” (20 phút) •Phần 4: Cấu hình Javadoc cho Hibernate và hiển thị trực quan Javadoc •Phần 5: Bài tập tự thí nghiệm Phần 1: Tạo CSDL "mydatabase" Sinh viên thực hiện tạo CSDL "mydatabase" trên máy theo thứ tự sau. 1. Chạy máy chủ CSDL Java DB (trong tài liệu có tên là Derby) 2. Tạo CSDL lấy tên là “mydatabase”
  • 3. 3. Cài đặt plug-in Hibernate cho NetBeans IDE (phiên bản 6.1 trở lên) Dưới đây là hướng dẫn thực thi từng bước trên (0.1) Chạy máy chủ CSDL Java DB (Derby) nếu chưa được khởi động 1. Chọn máy chủ Java DB. (như Hình-0.10) • Kích chọn tab Services. • Kích mở rộng vùng Databases. • Kích chuột phải Java DB và chọn Start Server. Nếu đã chạy rồi mục chọn này sẽ bị chuyển sang màu xám. Hình-0.10: Chạy máy chủ CSDL (0.2) Tạo CSDL lấy tên là “mydatabase" (nếu trên máy bạn chưa có) 1. Tạo CSDL • Kích chuột phải vào Java DB và chọn Create Database. (Hình-0.20)
  • 4. Hình-0.20: Tạo CSDL mydatabase 2. Điền vào các mục trong hộp thoại Create Java DB Database. • Trong mục Database Name, gõ tên "mydatabase". • Trong mục User name, gõ app. • Mục Password, gõ "app". (như Hình-0.21) • Kích OK để hoàn tất. Hình-0.21: Tạo CSDL
  • 5. 3. Kết nối đến CSDL mydatabase. Chú ý là lúc này bạn chưa cần tạo các bảng biểu trong CSDL. • Mở rộng mục Drivers. • Kích chuột phải vào jdbc:derby://localhost:1527/mydatabase [app on App] và chọn Connect... • Kích vào thẻ cửa sổ Projects để quay lại xem hiển thị của dự án (project) (0.3) Kiểm tra xem plug-in Hibernate đã được cài đặt chưa
  • 6. Nếu không thấy Hibernate trong danh sách các mục của thẻ Installed, điều đó có nghĩa là plug-in này chưa cài đặt trong NetBeans IDE của bạn. Kích vào thẻ Available Plugins và lựa chọn Hibernate sau đó cài đặt bằng cách kích vào Install. Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld"
  • 7. Trong phần này, sinh viên sẽ viết và chạy ứng dụng Hibernate khá đơn giản "HelloWorld". Trong ứng dụng này, chúng ta sẽ làm việc với đối tượng Person kết nối CSDL thông qua Hibernate. Các bước lần lượt thực hiện như sau: 1. Tạo lớp POJO, Person.java 2. Tạo file ánh xạ (mapping) cho lớp POJO, Write Hibernate mapping files for the POJO classes, Person.hbm.xml in this example 3. Tạo file cấu hình cho Hibernate, hibernate.cfg.xml 4. Tạo file Main.java và HibernateUtil.java 5. Thêm thư viện Hibernate và Java DB 6. Thêm log4j.properties vào đường dẫn lớp 7. Dịch và chạy ứng dụng 8. Kiểm thử lại CSDL (1.1) Tạo lớp POJO Trong ứng dụng đơn giản này, chúng ta chỉ viết một lớp POJO. Ta sẽ đặt tên lớp là Person.java. POJO là đại diện tiêu biểu cho lớp persistence. 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 biến thực thể (instance variable). Lớp persistence có những đặc điểm dưới đây: a. Nó là thay thế hướng đối tượng cho bảng ở cơ sở dữ liệu b. Các thuộc tính của bảng trở thành những biến thực thể của lớp persistence. c. Kiểu dữ liệu của biến thực thể là miền xác định của thuộc tính. d. Đối tượng của lớp thay cho hàng của bảng. 1. Tạo dự án NetBeans • Chọn File->New Project (hoặc Ctrl+Shift+N). (như Hình-1.11 dưới đây) Hình-1.11: Tạo dự án mới
  • 8. • Sau khi xuất hiện cửa sổ New Project. • Trong cửa sổ nhỏ các bước công việc, thực hiện chọn Choose Project, chọn Java dưới Categories và Java Application dưới Projects. (Hình-1.12) • Sau đó kích chọn Next. Hình-1.12: Tạo dự án ứng dụng Java • Ở bước Name and Location , trong mục Project Name, gõ tên HibernateHelloWorld. • Trong mục Create Main Class, gõ Main. (Hình-1.13 ở dưới) • Kích Finish để hoàn tất.
  • 9. Hình-1.13: Đặt tên cho dự án • Bạn sẽ thấy cửa sổ dự án HibernateHelloWorld và IDE sinh ra cửa sổ sửa đổi mã nguồn của Main.java của NetBeans IDE. 2. Xây dựng lớp Person.java như đoạn mã hiển thị trong Hình-1.14 dưới đây. Chú ý đây là lớp POJO. • Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Java Class.
  • 10. • Cửa sổ New Java Class xuất hiện. • Trong mục Class Name, gõ Person. • Bỏ trống mục Package. Nếu bạn muốn dùng package mặc định thì bỏ trống trường này. (Đối với bài thí nghiệm đơn giản này chúng ta tạm sử dụng package mặc định.) • Kích Finish để hoàn tất. (Hình-1.14)
  • 11. Hình-1.14: Cửa sổ đặt Name and Location • Sửa đổi đoạn mã nguồn Person.java như hình Code-1.15 dưới đây. import java.io.Serializable; public class Person implements Serializable { private int id; private String name; protected Person() { } public Person(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
  • 12. Code-1.15: Person.java (1.2) Tạo file ánh xạ Hibernate cho các lớp POJO. Trong ứng dụng này do chỉ có 1 lớp Person, nên chúng ta chỉ phải viết một file ánh xạ. (Thực tế, một file ánh xạ cũng có thể chứa các thông tin ánh xạ tới nhiều lớp trong ứng dụng nhưng để tránh nhầm lẫn ta nên viết từng file ánh xạ cho mỗi lớp trong ứng dụng.) 1. Tạo file Person.hbm.xml. Trong file ánh xạ này, bạn phải xác định lớp Person sẽ được ánh xạ tới bảng person. Trường id của lớp Person sẽ được sử dụng như là khóa chính trong bảng CSDL person. Trường name sẽ tương ứng với cột cname. • Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Other. (Hình-1.21)
  • 13. Hình-1.21: Tạo file XML • Xuất hiện cửa sổ Choose File Type. • Chọn XML dưới phần Categories bên trái và XML Document dưới File Types bên phải. (Hình- 1.22) • Kích Next.
  • 14. Hình-1.22: Tạo tài liệu XML • Cửa sổ Name and Location xuất hiện. • Trong mục File Name, gõ Person.hbm. (Hình-1.23) • Kích Browse để chọn Folder. Hình-1.23: Xác định thư mục tạo file. • Xuất hiện cửa sổ lựa chọn thư mục. • Chọn src. • Kích Select Folder. (Hình-1.24)
  • 15. Hình-1.24: Chọn src • Kích Next. (Hình-1.25) Hình-1.25: Kích Next. • Xuất hiện cửa sổ Select Document Type. • Kích Finish để hoàn tất. (Hình-1.26)
  • 16. Hình-1.26: Kết thúc quá trình tạo tài liệu XML • Cửa sổ IDE sẽ hiển thị file XML để có thể thay đổi. • Thay bằng đoạn mẫu XML như trong nội dung Code-1.27 ở dưới. • Chú ý đoạn code in đậm. <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="Person" table="person"> <id name="id" type="int"> <generator class="increment"/> </id> <property name="name" column="cname" type="string"/> </class> </hibernate-mapping> Code-1.27: Person.hbm.xml
  • 17. (1.3) Tạo file cấu hình Hibernate File cấu hình dành riêng cho từng ứng dụng. Trong file này người lập trình phải xác định thông tin kết nối CSDL với tên và file ánh xạ. Ngoại trừ tên của file ánh xạ, hầu hết các ứng dụng Hibernate có cùng tên với file cấu hình Hibernate. 1. Tạo file hibernate.cfg.xml. • Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->XML Document. • Cửa sổ Name and Location xuất hiện. • Trong trường File Name, gõ hibernate.cfg. • Kích Browse chọn thư mục.
  • 18. • Xuất hiện cửa sổ lựa chọn thư mục. • Chọn nút src. • Kích vào Select Folder. • Kích Next (trong cửa sổ Name and Location).
  • 19. • Xuất hiện cửa sổ Select Document Type • Kích Finish để hoàn tất. • Lúc này IDE sẽ hiển thị cửa sổ file XML để có thể thay đổi. • Thay thế bằng đoạn file mẫu XML với nội dung như trong Code-1.31.
  • 20. <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property> <property name="connection.url">jdbc:derby://localhost:1527/mydatabase</property> <property name="connection.username">app</property> <property name="connection.password">app</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.DerbyDialect</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">false</property> <!-- Mapping files --> <mapping resource="Person.hbm.xml"/> </session-factory> </hibernate-configuration> Code-1.31: hibernate.cfg.xml
  • 21. (1.4) Tạo file Main.java và HibernateUtil.java 1. Thay đổi nội dung của file Main.java trong IDE như đoạn mã nguồn trong Code-1.21. Chú ý ý nghĩa đoạn mã in đậm. Nếu không thêm các file thư viện Hibernate vào đường dẫn (classpath), IDE sẽ phát hiện ra một loạt các lỗi khi biên dich (hộp màu đỏ). Phần sau sẽ hướng dẫn để thêm các thư viện này. Trong phương thức main() của lớp Main, đối tượng lớp được khởi tạo và tiếp tục tồn tại thông qua đối tượng Session của Hibernate. import org.hibernate.*; import org.hibernate.cfg.Configuration; public class Main { public static void main(String[] args) { // Set up database tables HibernateUtil.droptable("drop table person"); HibernateUtil.setup("create table person ( id int, cname VARCHAR(20))"); // Create SessionFactory and Session object SessionFactory sessions = new Configuration().configure().buildSessionFactory(); Session session = sessions.openSession(); // Perform life-cycle operations under a transaction Transaction tx = null; try { tx = session.beginTransaction(); // Create a Person object and save it Person p1 = new Person(); p1.setName("Sang Shin"); session.save(p1); // Create another Person object and save it. Person p2 = new Person(); p2.setName("Young Shin"); session.save(p2); // Retrieve the person objects Person person = (Person)session. get(Person.class, p1.getId()); System.out.println("First person retrieved = " + person.getName()); person = (Person)session.get(Person.class, p2.getId()); System.out.println("Second person retrieved = " + person.getName()); tx.commit(); tx = null; } catch ( HibernateException e ) { if ( tx != null ) tx.rollback(); e.printStackTrace(); } finally { session.close(); } // Display tables HibernateUtil.checkData("select * from person"); } }
  • 22. Code-1.41: Person.hbm.xml 2. Viết file HibernateUtil.java như trong Code-1.42. Đây là lớp tiện ích giúp người lập trình có thể kiểm thử và gỡ rối chương trình mình viết. Trong bài thí nghiệm này, sinh viên sẽ được hướng dẫn sử dụng lớp tiện ích này để tạo và hiển thị bảng trong CSDL. Có thể sử dụng một cách thuật tiện lớp tiện ích này cho các dự án Hibernate khác mà không cần quan tâm hiểu rõ đoạn mã của nó. • Kích chuột phải nút dự án HibernateHelloWorld và chọn New->Java Class. • Xuất hiện cửa sổ nhỏ Name and Location. • Trong mục Class Name, gõ HibernateUtil. (Hình-1.42) • Kích Finish để hoàn tất.
  • 23. Hình-1.42: Tạo file HibernateUtil.java • Thay thế đoạn mã file HibernateUtil.java bằng đoạn mã trong Code-1.43. import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { // Database configuration public static String url = "jdbc:derby://localhost:1527/mydatabase"; public static String dbdriver = "org.apache.derby.jdbc.ClientDriver"; public static String username = "app"; public static String password = "app"; public static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from hibernate.cfg.xml sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException { Session s = (Session) session.get(); // Open a new Session, if this thread has none yet if (s == null) {
  • 24. s = sessionFactory.openSession(); // Store it in the ThreadLocal variable session.set(s); } return s; } public static void closeSession() throws HibernateException { Session s = (Session) session.get(); if (s != null) s.close(); session.set(null); } static Connection conn; static Statement st; public static void setup(String sql) { try { createStatement(); st.executeUpdate(sql); } catch (Exception e) { System.err.println("Got an exception! "); e.printStackTrace(); System.exit(0); } } public static void createStatement() { try { Class.forName(dbdriver); conn = DriverManager.getConnection(url, username, password); st = conn.createStatement(); } catch (Exception e) { System.err.println("Got an exception! "); e.printStackTrace(); System.exit(0); } } // Drop table if exists public static void droptable(String sql) { try { createStatement(); st.executeUpdate(sql); } catch (Exception e) { } } public static void checkData(String sql) { String[] starray = sql.split(" "); System.out.println("n******** Table: " + starray[starray.length-1] + " *******"); try { createStatement(); ResultSet r = st.executeQuery(sql); HibernateUtil.outputResultSet(r); // conn.close(); } catch (Exception e) { e.printStackTrace(); } }
  • 25. public static void outputResultSet(ResultSet rs) throws Exception{ ResultSetMetaData metadata = rs.getMetaData(); int numcols = metadata.getColumnCount(); String[] labels = new String[numcols]; int[] colwidths = new int[numcols]; int[] colpos = new int[numcols]; int linewidth; linewidth = 1; for (int i = 0; i < numcols; i++) { colpos[i] = linewidth; labels[i] = metadata.getColumnLabel(i + 1); // get its label int size = metadata.getColumnDisplaySize(i + 1); if (size > 30 || size == -1) size = 30; int labelsize = labels[i].length(); if (labelsize > size) size = labelsize; colwidths[i] = size + 1; // save the column the size linewidth += colwidths[i] + 2; // increment total size } StringBuffer divider = new StringBuffer(linewidth); StringBuffer blankline = new StringBuffer(linewidth); for (int i = 0; i < linewidth; i++) { divider.insert(i, '-'); blankline.insert(i, " "); } // Put special marks in the divider line at the column positions for (int i = 0; i < numcols; i++) divider.setCharAt(colpos[i] - 1, '+'); divider.setCharAt(linewidth - 1, '+'); // Begin the table output with a divider line System.out.println(divider); // The next line of the table contains the column labels. // Begin with a blank line, and put the column names and column // divider characters "|" into it. overwrite() is defined below. StringBuffer line = new StringBuffer(blankline.toString()); line.setCharAt(0, '|'); for (int i = 0; i < numcols; i++) { int pos = colpos[i] + 1 + (colwidths[i] - labels[i].length()) / 2; overwrite(line, pos, labels[i]); overwrite(line, colpos[i] + colwidths[i], " |"); } System.out.println(line); System.out.println(divider); while (rs.next()) { line = new StringBuffer(blankline.toString()); line.setCharAt(0, '|'); for (int i = 0; i < numcols; i++) { Object value = rs.getObject(i + 1); if (value != null){ overwrite(line, colpos[i] + 1, value.toString().trim()); overwrite(line, colpos[i] + colwidths[i], " |"); } }
  • 26. System.out.println(line); } System.out.println(divider); } static void overwrite(StringBuffer b, int pos, String s) { int len = s.length(); for (int i = 0; i < len; i++) b.setCharAt(pos + i, s.charAt(i)); } } Code-1.43: HibernateUtil.java (1.5) Thêm thư viện Hibernate và driver Java DB 1. Kích chuột phải vào dự án HibernateHelloWorld và chọn Properties. (Hình-1.61) Hình-1.61: Chọn Properties của dự án 2. Thêm thư viện Hibernate • Chọn Libraries dưới phần Categories phía bên trái và chọn nút Add Library phía bên phải. (Hình-1.62)
  • 27. Hình-1.62: Chọn Add Library • Chọn thư viện Hibernate. • Kích nút Add Library. (Hình-1.63) Hình-1.63: Thêm thư viện HibernateCore 3. Thêm driver Java DB. (Nếu dùng phiên bản NetBeans 6.7.1 – sẽ có lỗi vì driver này sẽ không xuất hiện trong danh sách, người dùng phải tự thêm vào).
  • 28.
  • 29. (1.6) Thêm file log4j.properties Đây là phần không bắt buộc. Nếu chưa có file log4j.properties trong đường dẫn của dự án, bạn sẽ nhận được một thông báo cảnh báo, tạm thời lúc này ta không cần để ý đến chúng. 1. Thêm file log4j.properties. • Kích chuột phải vào nút dự án HibernateHelloWorld và chọn New->Other. • Chọn Other dưới phần Categories phía bên trái và Empty File dưới File Types phía bên phải. • Kích Next.
  • 30. • Xuất hiện cửa sổ Name and Location. • Trong trường File Name, gõ log4j.properties. • Kích Browse lựa chọn thư mục. • Xuất hiện cửa sổ lựa chọn thư mục. • Chọn src. • Kích Select Folder. • Kích Finish để hoàn tất. • Một file chưa có nội dung sẽ xuất hiện trong cửa sổ IDE. • Gõ nội dung như trong Code-1.71 vào file đó.
  • 31. # # Log4J Settings for log4j 1.2.x (via jakarta-commons-logging) # # The five logging levels used by Log are (in order): # # 1. DEBUG (the least serious) # 2. INFO # 3. WARN # 4. ERROR # 5. FATAL (the most serious) # Set root logger level to WARN and append to stdout log4j.rootLogger=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n # Print only messages of level ERROR or above in the package noModule. log4j.logger.noModule=FATAL # OpenSymphony Stuff log4j.logger.com.opensymphony=INFO log4j.logger.com.opensymphony.webwork=DEBUG # Spring Stuff log4j.logger.org.springframework=INFO
  • 32. Code-1.71: File log4j.properties (1.7) Dịch và chạy ứng dụng Lúc này ta đã sẵn sang để dịch và chạy ứng dụng. 1. Kích chuột phải vào dự án HibernateHelloWorld và chọn Run. (Hình-1.81)
  • 33. Hình-1.81: Chạy dự án 2. Cửa sổ Output của IDE sẽ có dạng như Hình-1.82. Phần đầu là kết quả thông qua Hinernate và phần thứ hai hiển thị các dòng trong bảng person.
  • 34. 3. Hình-1.82: Kết quả thực hiện các thao tác CSDL thông qua Hibernate Sự cố: Nếu sinh viên nhận được cửa sổ lỗi như dưới đây thì chủ yếu là do máy chủ CSDL chưa chạy. 15 [main] WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection metadata org.apache.derby.client.am.DisconnectException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at org.apache.derby.client.net.NetAgent.<init>(Unknown Source) at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source) at org.apache.derby.client.am.Connection.<init>(Unknown Source) at org.apache.derby.client.net.NetConnection.<init>(Unknown Source) at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:154) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216) at HibernateUtil.<clinit>(HibernateUtil.java:26) at Main.main(Main.java:9) Got an exception! Xử lý: Khởi động máy chủ CSDL như hướng dẫn ở Phần 1. Sự cố: Nếu thấy đoạn lỗi sau trong cửa sổ Output, chủ yếu do driver của máy khách (client), derbyclient.jar cho CSDL Derby, chứ không phải vấn đề đường dẫn (classpath). Initial SessionFactory creation failed.org.hibernate.HibernateException: JDBC Driver class not found:
  • 35. org.apache.derby.jdbc.ClientDriver Exception in thread "main" java.lang.ExceptionInInitializerError at HibernateUtil.<clinit>(HibernateUtil.java:30) at Main.main(Main.java:9) Caused by: org.hibernate.HibernateException: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56) at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:397) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216) at HibernateUtil.<clinit>(HibernateUtil.java:26) ... 1 more Xử lý: Thêm driver derbyclient.jar, vào đường dẫn như mô tả trong Bước 1.5. (1.8) Kiểm thử lại CSDL Trong bước này ta sẽ kiểm tra lại xem bảng person thực tế có cư ngụ trong lớp Main. 1. Chọn thẻ cửa sổ Services. 2. Mở rộng mục Databases. 3. Kích chuột phải vào jdbc:derby://localhost:1527/mydatabase [app on APP] và chọn Connect (nếu chưa ở trạng thái đã được kết nối). (Hình-1.91) Hình-1.91: Kết nối với CSDL 4. Mở rộng APP->Tables. 5. Kích chuột phải vào bảng PERSON và chọn View Data. (Hình-1.92)
  • 36. Hình-1.92: Xem dữ liệu trong bảng PERSON 6. Ta sẽ nhận thấy có 2 dòng trong bảng PERSON. (Hình-1.93)
  • 37. Hình-1.93: Kiểm tra lại nội dung của bảng trong CSDL. Tổng kết Trong phần này, sinh viên được học cách để xây dựng ứng dụng Hibernate HelloWorld đơn giản từ các lớp của ứng dụng, các file ánh xạ tương ứng và file cấu hình Hibernate. Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2" Trong phần này, sinh viên sẽ được hướng dẫn tạo dự án mới HibernateHelloWorld2 thông qua việc sao chép lại dự án đã thực hiện trong Phần 1 HibernateHelloWorld. Nếu sao chép một dự án, toàn bộ file thư viện Hibernate sẽ tự động được sao chép vào dự án mới. Sinh viên cũng có thể thêm lớp POJO khác và file ánh xạ của nó vào dự án mới. 1. Tạo dự án "HibernateHelloWorld2" thông qua việc sao chép dự án "HibernateHelloWorld" project 2. Thêm lớp POJO mới, Student.java 3. Viết file ánh xạ, Student.hbm.xml 4. Thay đổi hibernate.cfg.xml 5. Thay đổi Main.java 6. Dịch và chạy dự án 7. Nhận lệnh SQL do Hibernate gửi (2.1) Tạo dự án "HibernateHelloWorld2" sao chép từ dự án "HibernateHelloWorld" 1. Kích chuột phải vào nút dự án HibernateHelloWorld chọn Copy. (Hình-2.10)
  • 38. Hình-2.10: Sao chép dự án Project 2. Đặt tên cho dự án mới. • Hộp thoại Copy Project xuất hiện. • Trong trường Project Name gõ tên HibernateHelloWorld2. • Kích chuột vào Copy. (Hinh-2.11) Hình-2.11: Sao chép dự án • Xuất hiện nút dự án HibernateHelloWorld2.
  • 39. (2.2) Thêm lớp POJO mới Trong bước này ta thêm lớp POJO mới đặt tên là Student. 1. Viết Student.java. import java.io.Serializable; public class Student implements Serializable { private int id; private String school; private String grade; protected Student() { } public Student(int id, String school) { this.id = id; this.school = school; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getSchool() { return school; } public void setSchool(String name) { this.school = name; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } Code-2.21: Student.java
  • 40. (2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student 1. Viết file Student.hbm.xml như trong Code-2.31. <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="Student" table="student"> <id name="id" type="int"> <generator class="increment"/> </id> <property name="school" column="schoolname" type="string"/> <property name="grade" column="grade" type="string"/> </class> </hibernate-mapping> Code-2.31: Student.hbm.xml