Header ads

Header ads
» » » 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:
http://vovanhai.files.wordpress.com/2008/10/jpa_config1.png
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
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_02.png
Nhấn Next, thiết lập các tùy chọn như hình sau:
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_03.png
Nhấnnút Next, ta được
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_04.png
Nhấn link “Add conection” để tạo 1 connection mới. Chọn My Sql như hình
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_05.png
Nhấn Next
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_06.png
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.
http://vovanhai.files.wordpress.com/2008/10/jpa_eclipse_07.png
Hiệu chỉnh file persistence.xml với nội dung sau:

http://java.sun.com/xml/ns/persistence&#8221
; 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”>

META-INF/orm.xml
com.vovanhai.wordpress.account.Account








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;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = “account”, schema = “subscription”)
public class Account implements Serializable {
/*private static final Logger logger = Logger.getLogger(
“com.vovanhai.wordpress.account.Account”);*/
private static final long serialVersionUID = -7201186159122319296L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String email;
private String firstname;
private String lastname;
private String company;
private String phone;
public Account() {
this(“”,”",”",”",”");
}
public Account(String email, String firstname,String lastname,
String company,String phone) {
this.email=email;
this.firstname=firstname;
this.lastname=lastname;
this.company=company;
this.phone=phone;
//logger.info(“Load records”);//in vết
}
@Column(name=”email”)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(name=”firstname”)
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
@Column(name=”lastname”)
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
@Column(name=”company”)
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@Column(name=”phone”)
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Column(name=”id”)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return id+”; “+ firstname+”; “+lastname+”;”+  email
+company+”;”+phone;
}
}
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;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class AccountRepository {
public static void main(String args[]) {
EntityManagerFactory emf = null;
EntityManager em = null;
EntityTransaction et=null;
try {
// SetUp
emf = Persistence.createEntityManagerFactory(“AccountSubscription”);
em = emf.createEntityManager();
et = em.getTransaction();
et.begin();//begin transaction
//=============================================
//tạo đối tượng account
Account acc = new Account();
acc.setEmail(“tyteo@gmail.com”);
acc.setCompany(“HUI Uni”);
acc.setPhone(“07769 697996″);
acc.setFirstname(“Nguyễn văn”);
acc.setLastname(“Tèo”);
// tạo mẫu tin Account trong database
em.persist(acc);
//=============================================
//tìm mẫu tin theo khóa chính
int id=1;
acc=FindingByID(em,id);
if(acc!=null)
System.out.println(acc);
else
System.out.println(“Không có account “+id);
//=============================================
List lst=GetAll(em);
if(lst!=null)
for(Account a:lst)
System.out.println(a);
//=============================================
System.out.println(“Danh sách Account có tên Tý”);
ListlstName=GetByLastName(em, “Tý”);
if(lstName!=null)
for(Account a:lstName)
System.out.println(a);
//=============================================
// Commit and Clean-Up
et.commit();
em.close();
emf.close();
} catch (Exception ex) {
et.rollback();//khôi phục nếu bị lỗi
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
/**
* Tìm kiếm theo ID
* @param em
* @param id
* @return
*/
static Account FindingByID(EntityManager em,int id){
Account acc=null;
try {
acc= em.find(Account.class, new Integer(id));
} catch (Exception e) {
e.printStackTrace();
}
return acc;
}
/**
* Lấy danh sách tất cả Account từ bảng account
* @param em
* @return
*/
@SuppressWarnings(“all”)
static List GetAll(EntityManager em){
Query query=em.createQuery(“from Account”);
List lst= (List)(query.getResultList());
return lst;
}
/**
* Lọc danh sách tài khoản theo LastName
* @param em
* @param lastname
* @return
*/
@SuppressWarnings(“all”)
static List GetByLastName(EntityManager em,String lastname){
Query query=em.createQuery(“from Account as acc where acc.lastname=?1″);
query.setParameter(1, lastname);
//Có thể thay index bằng name
//Query query=em.createQuery(“from Account as acc where acc.lastname=:ln”);
//query.setParameter(“ln”, lastname);

List lst= (List)(query.getResultList());
return lst;
}
}
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!

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn