Thiết lập Eclipse JPA Project dựa trên Java SE sử dụng Hibernate
Các phần mềm phải có
- Eclipse Ganymede 3.4
- Một hệ quản trị CSDL. Ở đây tôi sử dụng MySQL 5.0.
- Một JDBC Driver cho database. Tôi sử dụng Connector/J 5.0 driver của MySQL
- Hibernate
- Hibernate Core 3.2.5.GA
- Hibernate EntityManager 3.3.1.GA
Để tạo ứng dụng JPA với eclipse, ta cần thiết lập cho cả 2 vấn đề sau:
- Cấu hình JPA Implementation Library
- Cấu hình 1 kết nối đếndatabase
1. Cấu hình JPA Implementation Library
Bởi vì Hibernate không được cấu hình sẵn trong eclipse nên chúng ta phải tạo 1 Eclipse User Library. Các thư viện của Hibernate chúng ta có thể download tại http://www.hibernate.org/6.html. Chúng ta cần 2 thư viện Hibernate Core và Hibernate EntityManage. Sau khi download về, ta giải nén vào 1 thư mục nào đó, chẳng hạn như C:\javaSoft.
Trong môi trường Eclipse Ganymede, chọn menu Windows->References, rồi tiếp tục chọn Java -> Build Path -> User Libraries. Nhấn nút New để thêm mới 1 thư viện, đặt tên là Hibernate.
Nhấn nút Add JARs… để thêm vào các thư viện sau:
- hibernate-entitymanager.jar
- lib/hibernate-annotations.jar
- lib/ejb3-persistence.jar
- lib/hibernate-commons-annotations.jar
- hibernate3.jar
- antlr-2.7.6.jar
- hibernate-core.jar
- commons-collections-3.1.jar
- dom4j-1.6.1.jar
- javassist-3.4GA.jar
- jta-1.1.jar
- slf4j-log4j12.jar
- log4j.jar
Kết quả như hình sau:

Nhấn OK để hoàn tất công việc.
2. Tạo Database
Tạo data base tên subscription bằng cách chạy lệnh sau trong MySQL Comand Promt
CREATE DATABASE subscription; |
hoặc dùng “MySQL Query Browser” để tạo database. Chạy script sau để sinh ra table
| DROP TABLE IF EXISTS `subscription`.`account`; CREATE TABLE `subscription`.`account` ( `id` int(10) unsigned NOT NULL auto_increment, `email` varchar(128) NOT NULL, `firstname` varchar(128) NOT NULL, `lastname` varchar(128) NOT NULL, `company` varchar(128) NOT NULL, `phone` varchar(128) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; |
3. Tạo Eclipse project
Trong Eclipse, tạo 1 JPA project bằng cách vào menu File->New->Project, sau đó tìm đến JPA project như hình

Nhấn Next, thiết lập các tùy chọn như hình sau:

Nhấnnút Next, ta được

Nhấn link “Add conection” để tạo 1 connection mới. Chọn My Sql như hình

Nhấn Next

Có thể nhấn nút “Test Connection” để đảm bảo kết nối thành công. Nhấn Finish để kết thúc việc tạo connection. để quay lại của sổ tạo JPA Project. Nhấn Finish để tạo project mới.
Mở rộng các node của project trong cửa sổ project explorer ta có kết quả như hình.

Hiệu chỉnh file persistence.xml với nội dung sau:
| <?xml version=”1.0″ encoding=”UTF-8″?> <persistence version=”1.0″ xmlns=”http://java.sun.com/xml/ns/persistence” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd”> <persistence-unit name=”AccountSubscription”> <mapping-file>META-INF/orm.xml</mapping-file> <class>com.vovanhai.wordpress.account.Account</class> <properties> <property name=”hibernate.dialect” value=”org.hibernate.dialect.MySQLDialect” /> <property name=”hibernate.connection.driver_class” value=”com.mysql.jdbc.Driver” /> <property name=”hibernate.connection.url” value=”jdbc:mysql://localhost:3306/subscription” /> <property name=”hibernate.connection.username” value=”root” /> <property name=”hibernate.connection.password” value=”" /> </properties> </persistence-unit> </persistence> |
Có thể eclipse sẽ thông báo lỗi cho file xml này, mặc kệ nó, bạn tiếp tục làm theo các bước sau
Tạo package com.vovanhai.wordpress.account
Tạo lớp Account.java trong package này với nội dung sau
| package com.vovanhai.wordpress.account;
import java.io.Serializable; import javax.persistence.Column; @Entity @Id public Account() { |
Vậy là chúng ta đã tạo 1 đối tượng POJO ánh xạ giữa đối tượng Account với bảng account của database.
Tiếp theo, bạn thêm 1 tham chiếu đến MySQL driver vào trong project bằng cách nhấn phải chuột lên project, chọn properties, chọn đến mục “Java Build Path”, nhấn nút “Add External JARs…” rồi chọn MySQL connector – file mysql-connector-java-5.1.6-bin.jar.
tạo lớp main có tên AccountRepository.java để thử ứng dụng
| package com.vovanhai.wordpress.account;
import java.util.List; public class AccountRepository { //============================================= //============================================= //tìm mẫu tin theo khóa chính List<Account> lst= (List<Account>)(query.getResultList()); |
OK. Mọi thứ đã xong, bạn có thể chạy thử ứng dụng và thử mở database lên để kiểm tra.
Chúc thành công!
Kevin said
Cái orm.xml có cần config gì không anh?
vovanhai said
Như ví dụ là OK rồi!
Hai said
Thầy ơi .Bên em bị lỗi này :
Exception in thread “main” java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:912)
at java.lang.ClassLoader.loadClass(ClassLoader.java:320)
at java.lang.ClassLoader.loadClass(ClassLoader.java:318)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:270)
at javax.persistence.Persistence.findAllProviders(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:49)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at test.Test.(Test.java:33)
at test.Test.main(Test.java:52)
Đây là lỗi gì thầy ?
vovanhai said
Em xem lại các libraries của em có đúng, đủ chưa.
Hai said
Vẫn còn bị lỗi thầy ơi.dúng từ library + cầu trúc thư mục nhưng vẫn bị lỗi
MuaHong said
Thầy ơi cho em hỏi: cài hibernate là chỉ cần add các thư viện như bước 1 hả thầy? Em cảm ơn thầy.
tspt2910 said
Em thấy trong Hibernate phải có một file Mapping file dạng xml, trong bài viết này em chưa thấy anh nói đến, có cách nào để gene tự động file này không ạ,
nếu có anh có thể hướng dẫn thêm được không ạ.
Võ Văn Hải said
Khi dùng annotation thì không cần file đó nữa bạn.
Nhat said
Thầy ơi elipse của em không co JPA project thi phải làm sao ?
Võ Văn Hải said
“Thầy ơi elipse của em không co JPA project thi phải làm sao ?”
Chọn bản JavaEE nó mới có.
Nhat said
Ra là vậy, thanks thầy