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
- 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
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 PromtCREATE DATABASE subscription; |
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ìnhNhấ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:
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; } } |
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 if(lst!=null) for(Account a:lst) System.out.println(a); //============================================= System.out.println(“Danh sách Account có tên Tý”); List 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 Query query=em.createQuery(“from Account”); List return lst; } /** * Lọc danh sách tài khoản theo LastName * @param em * @param lastname * @return */ @SuppressWarnings(“all”) static List 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 return lst; } } |
Chúc thành công!