Eclipse i Oracle - integracja środowiska

0

Witam.
Potrzebuję napisać aplikację w Javie, która będzie się komunikowała z bazą danych. W PHP zrobiłbym to bez trudu, ale tutaj problemy zaczynają się już na poziomie IDE. To jest już drugie moje podejście do tematu, mam nadzieję, że teraz się uda.
Czy ktoś mi może podesłać jakiś tutorial, lub samemu wytłumaczyć jak to zrobić krok po kroku w Eclipsie?

  1. jaki typ projektu to ma być:
  • Java/Java Project
  • Java EE/Enterprise Application Project
  • EJB/EJB Project
  • Web/Dynamic Web Project
  • a może jakiś inny?
  1. Co dalej? zakładam, że trzeba zrobić jakiś plik jsp, który będzie pobierał dane z bazy, ale jak się z tą bazą połączyć? Czy połączenie ustanawia się poprzez wpisanie funkcji z odpowiednimi parametrami, czy też przez jakieś ustawienia w IDE?

Jak już taki szkielet będę miał, to chyba z resztą sobie poradzę :/

Sam już coś kombinowałem, ale IDE nie chce mi uparcie ustanowić połączenia z bazą. Bazę mam w wersji 10g, a sterownik to ojdbc14.jar Nie wiem co podać w "SID". Zawsze się o to pluje, chyba że podam jako session ID "21", ale wtedy też nie chce się połączyć i wywala takie błędy:

java.sql.SQLException: Wyjątek we-wy: Got minus one from a read call
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:89)
at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:104)
at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:53)
at org.eclipse.datatools.enablement.internal.oracle.JDBCOracleConnectionFactory.createConnection(JDBCOracleConnectionFactory.java:27)
at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:355)
at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

0

Do połączenia z bazą danych najwygodniej jest użyć jdbc. Ale w pierwszym kroku powinieneś się zdecydować, jaką aplikację chcesz napisać, bo widze, że chyba sam tego jeszcze nie wiesz (tj. czy chcesz pisać aplikację okienkową, czy może jsp, itd.).

0

Zdecydowanie nie okienkową. To ma być typowa aplikacja webowa, z interfejsem poprzez przeglądarkę internetową. Już pisałem, że mam ściągnięty oraclowy sterownik ojdbc w wersji 1.4 (nie obsługuje java Persistence i adnotacji), tyle że nie wiem co z tym zrobić. Zdefiniowałem sterownik (Window -> Preferences -> Data Management -> Conectivity -> Driver definitions), ale co dalej?
Jaki projekt teraz utworzyć?
Jakie pliki tworzyć?

[EDIT]
Gdy chciałem utworzyć połączenie z bazą danych (widok "Data Source Explorer") Wybrałem jako typ Oracle, wpisałem IP serwera (localhost), oraz port, jako SID wpisałem hr (tak nazywa się baza na serwerze oracla) podałem usera i hasło i jak kliknąłem "Test Connection", to pojawił się błąd ping failed, a szczegóły błędu cytowałem w pierwszym poście.

0

@Neojawor, SID to nazwa usera Oracla. Poczytaj na stronie Oracle co i jak.

Dwa połączenie z bazą nie jest realizowane tak jak w php z poziomu jsp. Jsp służy tylko do generowania widoków, w przeciwieństwie do tego co mogłeś usłyszeć na wykładach lub przeczytać w tutorialach jsp nie jest technologią samą w sobie. Do połączenia z bazą najłatwiej użyć JDBC, ale pisanie czegokolwiek w tej technologii przypomina rzeźbę w materiale miękkim. Znacznie lepszym rozwiązaniem jest użycie narzędzia OMR (Object-Relational Mapping) takiego jak np. Hibernate.

0

trochę nie łapię - co to ten user Oracla? Chyba nie to samo co użytkownik logujący się do bazy?
W jaki sposób korzystać z Hibernate? Czy muszę ściągnąć coś do Eclipsa? Z tego co wiem to ORM jest realizowany przez Java Persistence API, a nie ma do oracla 10g sterownika, który by obsługiwał JPA (przynajmniej coś takiego wyczytałem). W związku z tym byłbym wdzięczny za odrobinę łopatologii bez ORM:
Zakładając, że mam w bazie tabelę T1 z kolumnami ID i opis, co mam zrobić, żeby ją obsługiwać?
-Pewnie trzeba zrobić plik index.jsp, w którym stworzę zwykły formularz <form>, do którego będę wprowadzał mój opis.
-Później trzeba by pewnie zrobić servlet, który dane z formularza zapisuje do bazy.
-Na końcu znowu jakiś jsp, który wyświetla dane z bazy (lub zrobić to w pliku index.jsp)

Teraz moje pytanie - czy mam rację i jeśli tak, to jak to zrobić?

0

User Oracle (w praktyce to pod czym występuję oracle w systemie) jest związany z samym sposobem działania bazy. Sam nie do końca łapie jak to działa, ale oracle tworzy w trakcie instalacji swojego użytkownika w systemie i wykorzystuje go do różnych zadań.

Co do Hibernate (jest to implementacja JPA) to wykorzystuje on sterownik do oracle który podałeś. Masz tak:
Obiekt Java -> JPA -> mapowanie -> sterownik JDBC -> baza danych
http://www.netbeans.org/kb/61/web/hibernate-vwp.html tutorial opisuje jak korzystać z Hibernatea.
A tu JPA i jsf (taki bajerek w jsp) http://www.oracle.com/technology/products/ias/toplink/jpa/examples/jsf-jpa-example.html

0

Na wstępie dzięki za pomoc.

Jestem na etapie przerabiania tutoriala JSF w NetBeansie.
Mam niestety dalej problem z połączeniem z bazą Oracle'a, więc JPA nie przećwiczę :(. Trochę poczytałem i wiem, że SID dla baz typu XE (Express) to właśnie XE. Próbuję ustanowić nowe połączenie poprzez Direct URL:
jdbcthin:javauser/javauser@localhost:8087/XE

niestety wywala wyjątek we/wy: "Got minus one from a read call" i oczywiście nie może się połączyć.
Szukałem na forum oracle.com, ale niestety nie znalazłem tam odpowiedzi. Jeśli ktoś ma doświadczenie w pracy z Oracl'em to proszę o podpowiedź. Gdzieś znalazłem sugestię, że to może sprawa Oracle Call Interface, który nie jest w pełni zainstalowany, tyle że ja nie mogę znaleźć żadnej instalki OCI na stronie Oracle'a.

0

A ten port 8087 to na pewno Twoj port?

0

Port na 110% jest właściwy. Jak jest zły host lub port, to krzyczy, że nie może znaleźć serwera, jak jest zły SID, to też się czepia innym komunikatem. W użytkowniku też nie mogłem popełnić błędu, bo loguję się na niego do panelu administracyjnego Oracla przez http, więc stawiam, że to nie jest kwestia połączenia

0

@pikseloza
miałeś rację, że to sprawa portu, 8087 który sam ustawiałem, to port połączeń HTTP, a klient (każdy) standardowo łączy się z bazą przez port 1521, więc poprawny URL to:
jdbcthin:javauser/javauser@localhost:1521/XE

sprawa tak trywialna a tyle krwi zepsuła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1