Trong các ví dụ của Hướng Dẫn Java về JPA, mình thường sử dụng MySQL để làm ví dụ vì nó free và dễ sử dụng, cốt yếu là mình quen sử dụng nó 😀 . Thiết nghĩ một số bạn, nhất là các bạn sinh viên thường hay sử dụng MSSQL Server nên mình viết thêm bài này để hướng dẫn các bạn cách kết nối MSSQL Server trong JPA để các bạn có thể tham khảo các bạn nhé!
Đầu tiên, mình sẽ tạo một Maven project để làm ví dụ:
Vì mình sẽ sử dụng JPA với implementation của Hibernate, do đó, mình sẽ thêm Hibernate dependencies như sau:
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.3.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.3.0.Final</version> </dependency> |
Project Lombok:
1 2 3 4 5 6 |
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency> |
Để sử dụng JPA với MSSQL Server, chúng ta cần thêm JDBC Driver dependency dành cho MSSQL Server là mssql-jdbc. Các bạn có thể tìm thấy latest version của mssql-jdbc từ Microsoft trên Remote Maven Repository tại https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc. JDBC Driver này có nhiều phiên bản dành cho các phiên bản Java khác nhau, các bạn hãy chọn cho đúng với phiên bản Java mà các bạn đang sử dụng nhé.
Ở đây, mình đang sử dụng Java 8 nên mình sẽ thêm dependency của mssql-jdbc như sau:
1 2 3 4 5 |
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>6.4.0.jre8</version> </dependency> |
Trong ví dụ này, mình sẽ định nghĩa một table đơn giản chứa thông tin lớp học như sau:
1 2 3 4 |
CREATE TABLE dbo.clazz ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(25) NOT NULL ) |
Entity của table này:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package com.huongdanjava.jpa; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import lombok.Getter; import lombok.Setter; @Entity @Table @Getter @Setter public class Clazz { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column private String name; } |
Phần quan trọng nhất là phần cấu hình cho tập tin cấu hình của JPA persistence.xml. Nội dung của tập tin này mình sẽ cấu hình như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence_2_1.xsd"> <persistence-unit name="jpaexample" transaction-type="RESOURCE_LOCAL"> <class>com.huongdanjava.jpa.Clazz</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=jpa_example" /> <property name="javax.persistence.jdbc.user" value="sa" /> <property name="javax.persistence.jdbc.password" value="abczxy1T" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.use_sql_comments" value="true" /> </properties> </persistence-unit> </persistence> |
Ở đây, driver class của MSSQL sẽ là com.microsoft.sqlserver.jdbc.SQLServerDriver và url để kết nối tới database sẽ có dạng là jdbc:sqlserver://<ip>:<port>;databaseName=<database_name>. Trong đó:
- ip là địa chỉ của MSSQL Server
- còn port là port mà MSSQL Server chạy trên server này. Port mặc định của MSSQL là 1443 nha các bạn! Nếu các bạn có đổi port thì chỉnh lại cho đúng nhé.
- database_name là tên database mà chúng ta cần làm việc.
OK, mọi thứ cần cấu hình đã xong, giờ thử chạy một ví dụ nhỏ xem sao nhé các bạn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.huongdanjava.jpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class Application { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpaexample"); EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); Clazz clazz = new Clazz(); clazz.setName("Class A"); em.persist(clazz); transaction.commit(); } } |
Kết quả:
Flint
Thank you so much!