2011-10-14 26 views
5

Tôi sắp kết nối với cơ sở dữ liệu của mình và tôi đang sử dụng EJB và JPA. Gần đây tôi đã bắt đầu thực hiện các công nghệ này vì vậy tôi có một số vấn đề cần hiểu tất cả tại thời điểm này :) Tôi biết rằng persistence.xml là cần thiết để sử dụng JPA. Đây là tệp mà tôi định cấu hình cách kết nối với cơ sở dữ liệu, mà tôi biết. Tuy nhiên nó có vẻ như có nhiều cách để làm điều đó.Một số sự nhầm lẫn xung quanh Tài nguyên JDBC và các hồ kết nối JDBC Glassfish

Điều gì sẽ là sự khác biệt (hoặc khi nào tôi thậm chí nên sử dụng một lựa chọn khác?) Của việc xác định các thuộc tính như tên người dùng, cơ sở dữ liệu, mật khẩu, vv trong tệp persistence.xml và trong Glassfish? Ưu điểm/nhược điểm nếu có.

Bên dưới hình ảnh tôi đã đăng Tôi có Tài nguyên JDBC và Hồ bơi kết nối JDBC. Tôi là một litte nhầm lẫn về thuật ngữ của cả hai. Tại sao chúng ta không thêm các thuộc tính như tên người dùng, cơ sở dữ liệu, mật khẩu và vv trong Tài nguyên JDBC? Ai đó có thể giải thích sự khác biệt giữa họ và ý của họ?

Tài JDBC

tài nguyên Một JDBC (nguồn dữ liệu) cung cấp các ứng dụng với một phương tiện kết nối với một cơ sở dữ liệu. Thông thường, quản trị viên tạo một tài nguyên JDBC cho mỗi cơ sở dữ liệu được truy cập bởi các ứng dụng được triển khai trong miền . (Tuy nhiên, nhiều hơn một tài nguyên JDBC có thể được tạo ra cho một cơ sở dữ liệu .) http://download.oracle.com/docs/cd/E19316-01/820-4335/ablih/index.html

Tôi nghĩ rằng nó lạ mà chúng ta thêm các thuộc tính như trên hồ bơi nhưng không có trong tài nguyên, nhưng tôi có thể hiểu sai khái niệm.

enter image description here

Trả lời

6

Trong "hồ kết nối JDBC" bạn có thể tạo chứa quản lý nguồn dữ liệu JDBC (với khả năng kết nối tổng hợp). Nguồn dữ liệu cần biết về ít nhất trình điều khiển JDBC, URL JDBC, tên người dùng và mật khẩu.

Trong "tài nguyên JDBC", bạn có thể liên kết các nguồn dữ liệu JDBC được quản lý vùng chứa đó với một hoặc nhiều tên JNDI sao cho chúng bằng JNDI có sẵn cho ứng dụng web được triển khai.

Trong persistence.xml bạn có thể chỉ định có nên sử dụng nguồn dữ liệu cục bộ hoặc sử dụng nguồn dữ liệu được quản lý vùng chứa hay không. Nếu bạn muốn sử dụng nguồn dữ liệu được quản lý vùng chứa, thì bạn nên chỉ định tên JNDI của nó. Sử dụng nguồn dữ liệu được quản lý vùng chứa có lợi thế là bạn có thể chia sẻ một nguồn dữ liệu duy nhất trong nhiều ứng dụng web. Trong trường hợp của JPA, nó cũng có lợi thế là bạn có thể sử dụng JTA (các giao dịch được quản lý container) để bạn không cần phải gọi transaction.begin(), commit(), rollback() vv trong mọi phương thức.

+0

Vì vậy, khi nào bạn đặt thuộc tính trong persistence.xml? Khi bạn có một ứng dụng trong Java SE? Nhưng về mặt khác, về cơ bản nó là các thuộc tính giống nhau và như vậy bạn có thể định nghĩa trong persistence.xml? – LuckyLuke

+0

Có, chỉ trong một ứng dụng Java SE đơn giản, nó có ý nghĩa (ví dụ, khi bạn muốn kiểm tra đơn vị dự án JPA của bạn). Trong một thùng chứa Java EE bạn thực sự muốn đi cho JTA với một nguồn dữ liệu được quản lý container để các EJB của bạn có thể thực hiện công việc của họ một cách độc đáo trong bối cảnh giao dịch. Thông thường, bạn cung cấp một 'persistence.xml' khác trong dự án web của bạn kế thừa các lớp từ dự án JPA và ghi đè kiểu giao dịch là JTA, cùng với một' 'trỏ đến tên JNDI của vùng chứa nguồn dữ liệu được quản lý. – BalusC

+0

Okey, sau đó tôi nghĩ rằng tôi bắt đầu hiểu nó :) – LuckyLuke

Các vấn đề liên quan