2012-07-16 44 views
17

Tôi có hai tùy chọn để định cấu hình kết nối cơ sở dữ liệu ứng dụng của mình - một trong số đó đang sử dụng JDBC, một tùy chọn khác đang sử dụng JNDI. Điều gì sẽ là lựa chọn tốt nhất về các loại kết nối hoạt động với cơ sở dữ liệu nhanh như thế nào.Điều gì sẽ nhanh hơn: JDBC hoặc JNDI?

Tôi hiểu đó là hai loại kết nối cơ sở dữ liệu khác nhau sử dụng các nguyên tắc khác nhau (JDBC là kết nối db trực tiếp, JNDI là cấu hình kết nối cơ sở dữ liệu trên máy chủ ứng dụng). Nhưng có những ưu điểm và nhược điểm chung khác của JDBC/JNDI có thể quan trọng hơn tốc độ hoạt động không? Nếu có, chúng là gì?

+0

Bằng JNDI, bạn có nghĩa là xác định Nguồn dữ liệu trên máy chủ? – Tomer

+0

@ ftom2: vâng, đó là ý tôi - cấu hình nguồn dữ liệu JNDI trên máy chủ ứng dụng – altern

+0

Không có bất kỳ mối quan hệ nào về hiệu năng giữa JNDI và JDBC, vì JNDI trả về một số thuộc tính giúp nhà phát triển ứng dụng hoặc máy chủ ứng dụng nhận kết nối cơ sở dữ liệu bằng JDBC ; API cấp thấp để kết nối cơ sở dữ liệu. – Max

Trả lời

21

Tôi đặt cược những gì bạn có nghĩa là lựa chọn từ

  1. tạo nguồn dữ liệu hoặc kết nối jdbc bằng tay trong ứng dụng của bạn, hoặc
  2. thiết lập nguồn dữ liệu trong các thùng chứa, và ứng dụng tra cứu các nguồn dữ liệu thông qua JNDI

Nếu đúng như vậy, hãy luôn dán 2 nếu có thể.

Lý do chính cho lựa chọn này không bao giờ là sự khác biệt về hiệu suất. Lý do để gắn bó với 2 là trong hầu hết các trường hợp, bạn cần 2 để có được các tính năng nâng cao hơn từ vùng chứa, ví dụ, giao dịch phân tán.

30

Kết nối cơ sở dữ liệu luôn sử dụng JDBC. Với JNDI bạn đăng ký một nguồn dữ liệu trong một dịch vụ thư mục có thể được tìm kiếm theo tên của nó. Do đó JDBC và JNDI hoàn toàn khác nhau và không thể hoán đổi cho nhau.

+0

+1 - Chính xác ;-) –

2

Không hoàn toàn rõ ràng về câu hỏi.

JNDI không phải là loại kết nối cơ sở dữ liệu. Bạn có thể sử dụng JNDI để tìm kiếm một DataSource, là một nhà máy cho các kết nối. Tuy nhiên, DataSource là một phần của API JDBC, vì vậy JNDI làm việc với JDBC như trái ngược với các lựa chọn thay thế ở đây.

Bạn có đang nói về việc sử dụng JDBC đối với cơ sở dữ liệu để biết thông tin thư mục hay không, so với sử dụng JNDI đối với một repo LDAP?

2

Lợi ích tốc độ thực đến từ việc có thể tái sử dụng các kết nối cơ sở dữ liệu.

Do đó, bạn cần sử dụng một phương pháp cung cấp kết nối cơ sở dữ liệu tổng hợp, và sau đó sử dụng công nghệ thích hợp để đến hồ bơi. Tùy thuộc vào việc thực hiện, điều này có thể là JDBC (nếu trình điều khiển hỗ trợ chính nó) hoặc JNDI hoặc một cái gì đó hoàn toàn khác.

Nếu ứng dụng của bạn chạy bên trong một thùng chứa web, thông thường sử dụng JNDI để cho phép cấu hình và quản lý nhóm trong vùng chứa web thay vì bên trong ứng dụng của bạn.

1

Như đã đề cập trong các câu trả lời trước, sử dụng Datasource giống như sử dụng JDBC về mặt công nghệ.

Tuy nhiên, việc sử dụng Nguồn dữ liệu thường là cách được đặt trước bởi vì theo cách đó bạn có máy chủ quản lý nhóm kết nối DB của mình.

1

Cho dù sử dụng tính năng tổng hợp kết nối không ảnh hưởng đến mã ứng dụng. Nó không yêu cầu bất kỳ thay đổi mã nào đối với ứng dụng vì ứng dụng thực hiện tra cứu trên tên JNDI của một nguồn dữ liệu đã đăng ký trước đó. Nếu nguồn dữ liệu chỉ định việc thực hiện tổng hợp kết nối trong quá trình đăng ký JNDI (như được mô tả trong phần Creating a Data Source Using the DataDirect Connection Pool Manager), ứng dụng khách sẽ hưởng lợi từ các kết nối nhanh hơn thông qua kết nối tổng hợp.

1

Câu hỏi là vô nghĩa. Nhanh hơn ở cái gì? Không có gì để so sánh. JDBC là một giao diện có mục đích chung cho các cơ sở dữ liệu quan hệ. JNDI là một giao diện có mục đích chung để đặt tên cho các hệ thống. Xác suất mạnh mẽ là hiệu quả của hoặc phụ thuộc 99% vào hệ thống đích được truyền đạt. Trong mọi trường hợp, cơ sở dữ liệu quan hệ và hệ thống đặt tên đáp ứng các nhu cầu hoàn toàn khác nhau mà phần lớn không thể so sánh được. Thông thường JNDI được sử dụng để có được một kết nối, sau đó JDBC được sử dụng để hoạt động với kết nối đó.

3

Đây là những gì tôi đã tìm thấy về JNDI và JDBC.

JNDI: Đây là công nghệ hoạt động giống như thư mục điện thoại được sử dụng để tìm kiếm tên trên máy chủ và nguồn dữ liệu từ xa.

JNDI tạo hồ bơi kết nối. Hồ bơi kết nối là môi trường trên máy chủ nơi JNDI và Cơ sở dữ liệu được đóng gói để kết nối Type4.

JDBC: API Java cho phép các chương trình Java thực thi các câu lệnh SQL. Điều này cho phép các chương trình Java tương tác với bất kỳ cơ sở dữ liệu tuân thủ SQL nào.

JDBC tương tự như ODBC, nhưng được thiết kế đặc biệt cho các chương trình Java, trong khi ODBC là độc lập với ngôn ngữ.

JDBC được phát triển bởi Sun Microsystems. JNDI nhanh hơn và hiệu quả hơn.

+1

Một lần nữa; Tôi đã thông báo cho bạn nhiều lần về yêu cầu tiết lộ khi liên kết tới trang web của riêng bạn, nhưng bạn đã nhiều lần không làm như vậy. –

+0

Ok. Tôi sẽ sửa nó. – Ruthreshwar

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