JDBC là chế độ thô sơ duy nhất, mộc mạc độc nhất vô nhị hỗ trợ chúng ta kết nối DataBase vào vận dụng Java. Và rồi Hibernate thành lập và hoạt động, nó sẽ đem vào mình nhiều vẻ ngoài có ích giúp cho Việc kết nối cùng với DataBase một bí quyết dễ ợt, dễ dãi rộng.

Bạn đang xem: Hibernate là gì

Thứ nhất tôi xin liệt kê một số "vấn đề" chạm mặt bắt buộc khi thực hiện JDBC.

Ta đề nghị lặp đi tái diễn những dòng code như thể nhau vào áp dụng chỉ để đưa tài liệu từ bỏ database.Chúng ta yêu cầu vất vả vởi việc map giữa Object Java với các table tương xứng trong database.Tốn nhiều công sức của con người để biến hóa từ hệ quản lí trị DataBase này (MySQL) qua một hệ quản trị DataBase không giống (Oracle).Khó khnạp năng lượng vào bài toán sinh sản những giao tiếp/contact thân những table, thiết kế OOPs.

Nhưng với Hibernate ta hoàn toàn có thể giải tỏa được các "vấn đề" bên trên. Nhưng trước tiên ta xem lại những có mang cơ phiên bản JDBC với Hibernate là gì?

1. JDBC là gì?

JDBC là viết tắt của Java Database Connectivity, nó là ứng dụng mã mối cung cấp msống đến Java, giúp áp dụng Java triển khai kết nối, thao tác làm việc với cơ sở dữ liệu.Nó chất nhận được ta thực hiện các thao tác làm việc chuy xuất, update dữ liệu cùng với DataBase quan hệ giới tính bằng Việc sử dụng các câu lệnh Squốc lộ.

JDBC Workflow

*
Ứng dụng Java áp dụng JDBC thao tác làm việc cùng với DataBase thông qua trình từ bỏ 7 bước như sau.

Tạo liên kết đến databaseGửi Squốc lộ query đến database thực hiện JDBC driver tương ứngJDBC driver liên kết cho databaseThực thi câu lệnh query để đưa công dụng trả về (số phiên bản ghi mang được, số phiên bản ghi được update/delete)Gửi tài liệu đến vận dụng trải qua Driver ManagerXử lý dữ liệu trả vềĐóng (giải phóng) kế nối mang lại database

2. Hibernate là gì?

Hibernate là một trong thư viện ORM (Object Relational Mapping) mã mối cung cấp mnghỉ ngơi góp lập trình viên viết ứng dụng Java có thể map những objects (pojo) với hệ quản trị các đại lý dữ liệu tình dục,với cung ứng triển khai những có mang thiết kế phía đối tượng người dùng với cớ tài liệu quan hệ tình dục.Hibernate Workflow

*
Persistence objectChính là những POJO object bản đồ cùng với những table khớp ứng của đại lý dữ liệu quan hệ nam nữ. Nó như là các "thùng xe" cất tài liệu từ áp dụng để ghi xuống database, giỏi cất tài liệu mua lên vận dụng từ bỏ database.Session FactoryLà một interface giúp tạo ra session kết nối đến database bằng cách phát âm các cấu hình trong Hibernate configuration. Mỗi một database yêu cầu gồm một session factory. lấy ví dụ như giả dụ ta thực hiện MySQL, với Oracle mang đến áp dụng Java của mình thì ta cần có một session factory mang lại MySQL, với một session factory đến Oracle.File cấu hình hibernate.cfg.xml tất cả nlỗi sau.

3. Sau đó là các nguyên do khiến cho ta chọn Hibernate thay vày JDBC.

1. Object Mapping

Với JDBC ta đề xuất map những ngôi trường vào bảng với những trực thuộc tính của Java object một phương pháp "thủ công". Với Hibernate đã hỗ trợ ta map một biện pháp "từ bỏ động" trải qua các file cấu hình maps XML hay được dùng những anotation.JDBC đã bản đồ Java object với table nlỗi sau.

Xem thêm: Tên Tiếng Anh Cục Cảnh Sát Tiếng Anh Là Gì ? Cục Cảnh Sát Tiếng Anh Là Gì

//rs là ResultSet trả về từ bỏ câu query get tài liệu bảng user.ListUser> users=new ArrayListUser>();while(rs.next()) User user = new User(); user.setUserId(rs.getString("UserId")); user.setName(rs.getString("FirstName")); user.setEmail(rs.getString(“Email”)); users.add(user); Cũng với table user đó thực hiện những anotaion nhằm Hibernate hoàn toàn có thể bản đồ một giải pháp "từ bỏ động" như sau.


Column(name = "name") private String name; public BigInteger getId() return this.id; public void setId(BigInteger id) this.id = id; public String getEmail() return email; public void setEmail(String email) this.tin nhắn = email; public String getName() return this.name; public void setName(String name) this.name = name; }

2. HQL

Hibernate cung ứng những câu lệnh truy vấn vấn tương tự Squốc lộ, HQL của Hibernate cung cấp vừa đủ những truy nã vấn nhiều dường như, HQL "hiểu" các quan niệm nlỗi kế thừa (inheritance), đa hình (polymorphysm), và links (association). Sau đấy là ví dụ về câu lệnh HQL.

...Session session = null;try session = sessionFactory.openSession(); Query query = session.createQuery("select s.empId, s.name, s.salary from Salary s "); Iterator sal = query.iterate(); System.out.println("EmpId Name Salary"); while(sal.hasNext()) Object<> obj = (Object<>) sal.next(); System.out.println(obj<0>+" "+ obj<1>+ " "+ obj<2>); catch(Exception e) System.out.println(e.getMessage()); finally session.close();

3. Database Independent

Code áp dụng Hibernate là hòa bình cùng với hệ quản lí trị cơ sở dữ liệu, nghĩa là ta không yêu cầu biến đổi câu lệnh Hquốc lộ lúc ta đưa tự hệ quản lí trị CSDL MySQL lịch sự Oracle, giỏi những hệ quản ngại trị DataBase khác... Do kia rất dễ nhằm ta chuyển đổi DataBase quan hệ giới tính, dễ dàng và đơn giản bằng cách chuyển đổi biết tin cấu hình hệ quản ngại trị cơ sở dữ liệu vào file cấu hình.

//used MySQLproperty name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>// used Oracleproperty name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriverproperty>ví dụ như Khi ta mong mang 10 bạn dạng ghi dữ liệu của một table từ bỏ 2 DataBase không giống nhauVới JDBC ta bao gồm câu truy hỏi vấn như sau.

#MySQLSELECT column_name FROM table_name ORDER BY column_name ASC LIMIT 10; #SQL Server SELECT TOPhường. 10 column_name FROM table_name ORDER BY column_name ASC;Với Hibernate câu truy nã vấn không thay đổi đối với tất cả 2 cơ sở dữ liệu.

Session.CreateQuery("SELECT E.id FROM Employee E ORDER BY E.id ASC").SetMaxResults(10).List();

4. Minimize Code Changes

khi ta biến hóa (thêm) cột vào bảng,Với JDBC ta buộc phải biến đổi đông đảo gì:

Thêm nằm trong tính vào POJO class.Ttốt đổi method cất câu truy tìm vấn "select", "insert", "update" để bổ sung cột bắt đầu.Có thể có khá nhiều method, các class cất những câu truy vấn nhỏng trên.Với Hibernate ta chỉ cần:Thêm trực thuộc tính vào POJO class.Cập nhật Hibernate XML mapping tệp tin để thêm maps column - property.Ta chỉ đổi khác độc nhất 2 file bên trên.

5. Lazy Loading

Với hầu hết áp dụng Java làm việc với cửa hàng tài liệu mập hàng ngàn triệu bạn dạng ghi, bài toán bao gồm sử dụng Lazy loading vào truy tìm xuất tài liệu từ database mang về ích lợi rất to lớn. Nó giống như vấn đề ta rất có thể bẻ từng mẫu đũa của bó đũa to cụ bởi vì bẻ cả bó đũa.Ví dụ phần đông file tài liệu bởi người tiêu dùng upload được lưu giữ làm việc bảng document. Bảng user bao gồm tình dục một-các cùng với bảng document. Trong trường hợp này class User là class thân phụ, class Document là class nhỏ. Bảng document mau lẹ đầy lên theo thời gian. Mỗi Lúc ta rước công bố user với docment tương ứng từ bỏ database trả sử dữ liệu document là không nhỏ, nhằm áp dụng không trở nên chậm rãi bởi đề nghị mất quá nhiều bộ nhớ lưu trữ nhằm cất toàn cục document của toàn cục user, ta vận dụng Lazy loading mang lại từng user nhỏng sau.

// Declaring fetch type for one khổng lồ many association in your POJO
OneToMany(mappedBy = "user", fetch = FetchType.LAZY)private Set documents = new HashSet();// To fetch user with document use initialize() method as followsUser user = (User)session.get(User.class, new Integer(100));//This code will fetch all products for user 100 from database "NOW"documents = user.getDocuments();

6. Loại bỏ Try-Catch Blocks

Sử dụng JDBC ví như lỗi xảy lúc tao tác cùng với database thì sẽ sở hữu được exception SQLexception phun ra. do vậy ta bắt buộc thực hiện try-catch bloông xã nhằm giải pháp xử lý nước ngoài lệ.Hibernate xử trí vấn đề này khiến cho bạn bằng phương pháp nó override toàn bộ JDBC exception thành Unkiểm tra xeption, và ta ko đề nghị viết try-catch vào code của chính bản thân mình nữa.

7. Quản lý commit/rollbachồng Transaction

*
Transaction là nhóm các vận động (với database) của một tác vụ. Nếu một hoạt động không thành công xuất sắc thì cục bộ tác vụ ko thành công.Với JDBC thiết kế viên phải chủ động triển khai commit Lúc cục bộ hoạt động vui chơi của tác vụ thành công xuất sắc, hay đề nghị rollback Lúc bao gồm một hoạt động ko thành công xuất sắc để hoàn thành tác vụ.Với Hibernate thì ta ko phải quan tâm mang lại commit xuất xắc rollbaông chồng, Hibernate sẽ thống trị nó hỗ trợ chúng ta rồi.

8. Hibernate Caching

*
Hibernate cung ứng một chính sách bộ lưu trữ đệm, giúp bớt số lần truy cập vào database của ứng dụng càng các càng giỏi. Điều này sẽ sở hữu được tác dụng tăng performance đáng kể mang đến vận dụng của doanh nghiệp. Hibernate tàng trữ các đối tượng người sử dụng trong session khi transation được kích hoạt. khi một query được thực hiện liên tiếp, quý giá được lưu trữ vào session được sử dụng lại. Khi một transaction bắt đầu bắt đầu, dữ liệu được mang lại tự database với được tàng trữ session. Hibernate cung cấp nhị cấp độ Cach, bản thân sẽ sở hữu được bài xích cụ thể hơn về Cach vào Hibernate.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *