2012-07-16 16 views
17

Mam dwie opcje konfigurowania połączenia z bazą danych aplikacji - jedna używa JDBC, druga używa JNDI. Jaka będzie najlepsza opcja pod względem szybkości działania tych typów połączeń z bazą danych.Co jest szybsze: JDBC lub JNDI?

Rozumiem, że są to dwa różne typy połączeń baz danych wykorzystujących różne zasady (JDBC to bezpośrednie połączenie db, JNDI to konfiguracja puli połączeń bazy danych po stronie serwera aplikacji). Ale czy istnieją inne ogólne plusy i minusy JDBC/JNDI, które mogą być ważniejsze niż szybkość działania? Jeśli tak, jakie one są?

+0

Przez JNDI masz na myśli definiowanie źródła danych na serwerze? – Tomer

+0

@ ftom2: tak, to właśnie miałem na myśli - konfigurowanie źródła danych JNDI na serwerze aplikacji – altern

+0

Nie ma żadnego związku pod względem wydajności między JNDI i JDBC, ponieważ JNDI zwraca niektóre właściwości, które pomagają programistom aplikacji lub serwerom aplikacji uzyskać połączenie z bazą danych za pomocą JDBC ; API niskiego poziomu dla łączności z bazą danych. – Max

Odpowiedz

21

Założę się o co ci chodzi się wybierając z

  1. tworzenia źródła danych lub połączenia JDBC ręcznie w aplikacji, lub
  2. skonfigurować źródło danych w kontenerze, a aplikacja odnośnika źródło danych przez JNDI

Jeśli tak jest, zawsze trzymaj się 2, jeśli to możliwe.

Głównym powodem wyboru nigdy nie są różnice w wydajności. Powodem, dla którego warto trzymać się 2, w większości przypadków jest to, że potrzebujesz 2, aby uzyskać bardziej zaawansowane funkcje z kontenera, na przykład transakcję rozproszoną.

30

Połączenie z bazą danych zawsze korzysta z interfejsu JDBC. Za pomocą JNDI rejestrujesz źródło danych w usłudze katalogowej, którą można wyszukać po nazwie. Tak więc JDBC i JNDI są całkowicie różne i nie są wymienne.

+0

+1 - Dokładnie ;-) –

2

Nie do końca jasne na pytanie.

JNDI nie jest typem połączenia z bazą danych. Można użyć JNDI do wyszukania źródła danych, które jest fabryką połączeń. DataSource jest częścią interfejsu JDBC API, więc JNDI współpracuje z JDBC, a nie alternatywy.

Czy mówisz o użyciu JDBC przeciwko bazie danych dla informacji katalogowych, kontra JNDI przeciwko repozytorium LDAP?

2

Prawdziwa zaleta prędkości wynika z możliwości ponownego wykorzystania połączeń z bazą danych.

W związku z tym należy zastosować podejście, które zapewnia łączenie połączenia z bazą danych, a następnie użyć odpowiedniej technologii, aby dostać się do puli. W zależności od implementacji może to być JDBC (jeśli sterownik obsługuje go sam) lub JNDI lub coś zupełnie innego.

Jeśli aplikacja działa wewnątrz kontenera internetowego, często używa się JNDI, aby umożliwić konfigurowanie i zarządzanie pulą w kontenerze internetowym zamiast w aplikacji.

1

Jak wspomniano w poprzednich odpowiedziach, używanie źródła danych jest takie samo jak używanie JDBC w zakresie technologii.

Mimo to używanie źródła danych jest zwykle preferowaną metodą, ponieważ w ten sposób serwer zarządza pulami połączeń DB.

1

Czy łączenie połączeń jest używane, nie ma wpływu na kod aplikacji. Nie wymaga żadnych zmian kodu w aplikacji, ponieważ aplikacja wykonuje wyszukiwanie na nazwie JNDI wcześniej zarejestrowanego źródła danych. Jeśli źródło danych określa implementację łączenia połączeń podczas rejestracji JNDI (jak opisano w sekcji Creating a Data Source Using the DataDirect Connection Pool Manager), aplikacja kliencka korzysta z szybszych połączeń poprzez łączenie połączeń.

1

Pytanie jest bez znaczenia. Szybciej na czym? Nie ma nic do porównania. JDBC to interfejs ogólnego przeznaczenia do relacyjnych baz danych. JNDI to uniwersalny interfejs do systemów nazewnictwa. Prawdopodobne jest, że skuteczność jednego z nich zależy od 99% od systemu docelowego, z którym się komunikujemy. W każdym razie relacyjne bazy danych i systemy nazw spełniają całkowicie odmienne potrzeby, które są w dużej mierze nieporównywalne. Zwykle do uzyskania połączenia używa się JNDI, a następnie JDBC jest używany do działania z tym połączeniem.

3

Oto, co znalazłem w JNDI i JDBC.

JNDI: Jest to technologia, która działa jak książka telefoniczna, która służy do zdalnego wyszukiwania nazwy na serwerze i źródle danych.

JNDI tworzy pulę połączeń. Pula połączeń jest środowiskiem na serwerze, na którym JNDI i baza danych są hermetyzowane dla połączeń typu 4.

JDBC: Interfejs API języka Java umożliwiający programom Java wykonywanie instrukcji SQL. Umożliwia to programom Java współdziałanie z dowolną bazą danych zgodną z SQL.

JDBC jest podobny do ODBC, ale jest zaprojektowany specjalnie dla programów Java, podczas gdy ODBC jest niezależny od języka.

JDBC został opracowany przez firmę Sun Microsystems. JNDI jest szybszy i wydajniejszy.

+1

Again; Wielokrotnie powiadamiałem cię o wymogu ujawnienia podczas łączenia z twoją własną stroną internetową, ale wielokrotnie tego nie robiłeś. –

+0

Ok. Poprawię to. – Ruthreshwar

Powiązane problemy