# JavaEE Webanwendung - Datenbank-Verbindung aufbauen



## lifeisbeautiful (29. Mrz 2018)

Hallo zusammen,

ich bin dabei, über JavaEE eine Webapplikation zu erstellen. Ich möchte zunächst einmal eine Datenbankverbindung herstellen. Bin folgendermaßen vorgegangen:

Java-Klasse erstellt:


```
package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class DBConnection {
    public Connection getConnection() {
        try {
            String url = "jdbc:oracle:thin://" + "hostname" + ":" + "Port" + "/" + "DBService";
            Connection conn = DriverManager.getConnection(url, "Username", "Passwort");
            return conn;
        }catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}
```

JSP-File erstellt:


```
<%@page import="java.sql.Connection"%>
<%@page import="test.DBConnection"%>
<%@page import="java.sql.DriverManager"%>

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Testing Database Connection</title>
</head>
<body>

<%
    DBConnection db = new DBConnection();
    Connection conn = db.getConnection();
    if(conn == null){
        out.print("Connection failed!");
    }
    else{
        out.print("Connection succeeded!");
    }
%>

</body>
</html>
```

Es läuft ein Remote-Server über Wildfly. Also ich arbeite nicht mit einem lokalen Server sondern über einen physikalischen Server. Da wurde mir ein Applikationsserver über Wildfly bereitgestellt. JDBC-Treiber wurden ebenfalls auf dem Server installiert.

Eigentlich wurde auch auch eine Datasource eingerichtet. Jedoch habe ich die zunächst einmal nicht verwendet sondern die Parameter eingegeben. Wie im Code zu sehen ist.

Jedoch zeigt es mir über den Webbrowser "Connection failed!" an. In der Konsole bekomme ich ebenfalls keine Fehlermeldung. Was mache ich denn falsch?


----------



## TheFrog (30. Mrz 2018)

Hallo lifeisbeautiful,


```
String url = "jdbc:oracle:thin://" + "hostname" + ":" + "Port" + "/" + "DBService";
            Connection conn = DriverManager.getConnection(url, "Username", "Passwort");
```

Wie soll das denn gehen wenn du keine Werte für hostname, port etc. festlegst?

"Es läuft ein Remote-Server über Wildfly. Also ich arbeite nicht mit einem lokalen Server sondern über einen physikalischen Server."
-> Ein Applikationsserver läuft auf einem Webserver und nicht andersherum.

"Da wurde mir ein Applikationsserver über Wildfly bereitgestellt." 
-> Wildfly ist ein Applikationsserver.

Wikipedia sagt zu JSP:
"JSP, das schon Ende der 1990er Jahre verfügbar war, ist eine vergleichsweise althergebrachte Technik zum Erzeugen von Webanwendungen. Es wird zunehmend von anderen Techniken abgelöst. Unter Verwendung des Frameworks JavaServer Faces (JSF) und der neueren Facelets-Technik unter Java EE 6 gilt Oracle JSP als deprecated."

Letzte Anmerkung:
Frameworks wie Hibernate und Spring erleichtern den Zugriff, Durchführen von Abfragen auf Datenbanken enorm. Das Rad muss nicht ständig neu erfunden werden und diese Frameworks sind i.d.R. besser implementiert (viele professionelle Entwickler beteiligt, ständige Code Reviews etc.) als die Lösungen einer einzelnen Person.

Ich würde mich freuen, wenn du meinen Anmerkungen etwas abgewinnen kannst  .


----------



## marlo (31. Mrz 2018)

sieh dir mal jpa an 
und jsp is als deprecated getaggt.

hol dir mal xampp (apachefriends.org)
da kannst auf deiner privatkiste j2EE und app-server spielen..

sakila als beispieldatenbank gibts bei oracle..und glaub da war auch n jpa beispiel dabei...
mit j2EE und jpa brauchst nicht mehr viel "handarbeit" um es erstmal zum rennen zu bringen..und in diesem bereich ist sogar youtube dein freund..

gruss


----------



## mrBrown (31. Mrz 2018)

marlo hat gesagt.:


> j2EE


Der Name ist aber mindestens genauso Deprecated wie JSP 


Statt XAMPP würde ich auch nur einen einfachen App-Server nutzen, den Rest von XAMPP braucht man eher selten.


----------



## marlo (31. Mrz 2018)

xampp wegen mysql,phpmyadmin. apache..tomcat..da hast wenigstens alles passend zusammen..aber geht auch single klar..
bei javaEE (j2EE gefällt mir aber besser )  is ja glassfish dabei..
gruss


----------



## mrBrown (1. Apr 2018)

marlo hat gesagt.:


> bei javaEE (j2EE gefällt mir aber besser ) is ja glassfish dabei..


Glassfish ist nicht "dabei", sondern ist einfach nur eine Implementierung des Standards 

Und "gefällt mir besser" ist selten ein guter Grund, einen seit 15 Jahren veralteten Namen zu nutzen ;P 
JPA gab's z.B. in J2EE nicht


----------



## marlo (1. Apr 2018)

frohe ostern..


mrBrown hat gesagt.:


> Und "gefällt mir besser" ist selten ein guter Grund, einen seit 15 Jahren veralteten Namen zu nutzen ;P
> JPA gab's z.B. in J2EE nicht


naja ich kenn männer, die nennen ihre frau auch schon seit 20 jahren "schatz" obwohl sie die letzten jahre eher hexe genannt werden müsste 

aber wir weichen geringfügig vom thema ab..


----------



## lifeisbeautiful (4. Apr 2018)

TheFrog hat gesagt.:


> Hallo lifeisbeautiful,
> 
> 
> ```
> ...



Ich bedanke mich sehr herzlich für eure Hilfen. Über Hibernate bin ich auch schon gestoßen. Irgendwie finde ich aber nichts passendes in Youtube, das ein Beispiel zeigt, wie ich mit Hibernate eine Datenbankverbindung aufbauen kann. Wäre es denn möglich, dass du mir einen Link schickst? Das wäre eine super Sache! Irgendwie werde ich gar nicht fündig. Klar, ich finde hin und wieder gewisse Tutorials, aber die bringen mich dann auch nicht ans Ziel irgendwie -.-

Ich freue mich sehr, wenn du mir eventuell einen Startschuss geben könntest ..


----------



## marlo (4. Apr 2018)

moin,
also wenn du javaEE und webanwendung spielen willst.

sieh dir wirklich mal jpa an, java persistence api..
du brauchst kein jdbc im ee umfeld mehr.
bei jpa hast du den entitymanager mit dem du namedqueries ausführen kannst,
jpa unterstützt hibernate, eclipselink und andere..

default ist glaub ich eclispelink..du erstellst einen connector zur datenbank. und persistence-klassen (macht netbeans auf einen klick selbständig)

bei tube gibts diverse tutorials dazu...sieh mal zb nach totalSurpriseException..von ihm gibts ne ganze reihe zu webapplikation und javaEE mit jpa..

hth
gruss martin
nachtrag.mit jpa baust in n paar minuten ne kleine webapp mit crud-funktionen..
du wirst, je nach grösse des projekts, wohl nicht an EJB, EL und jsf vorbei kommen..jsp sind zwar auch noch teilweise im einsatz, aber wie mrbrown schon geschrieben hat - deprecated - fang besser gleich mit dem aktuellen standard oder fast standard an..
hier der link zu tse:
https://www.youtube.com/channel/UCQgSSZ8l8a52BzWY4-HClDA/videos


----------



## marlo (4. Apr 2018)

hier mal auf die schnelle code mit jpa

```
List<Test> testDB=new ArrayList<>();
 EntityManagerFactory emf = Persistence
               .createEntityManagerFactory("embeddedDERBYPU");
    EntityManager em = emf.createEntityManager();                  
TestJpaController kjc =new TestJpaController(emf);
//einlesen über JPAController
    testDB=kjc.findTestEntities();
for(Test k:testDB){
            System.out.println(k.getData());
        }
//einlesen über EntityManager
List<Test>testEM=new ArrayList<>();
testEM=em.createNamedQuery("Test.findAll").getResultList();
for(Test k:testEM){
            System.out.println(k.getData());
        }
```


----------



## lifeisbeautiful (4. Apr 2018)

marlo hat gesagt.:


> moin,
> also wenn du javaEE und webanwendung spielen willst.
> 
> sieh dir wirklich mal jpa an, java persistence api..
> ...



Wow, so schnell geantwortet. VIELEN DANK!! Ich werde mir das mal anschauen und melde mich, falls ich nicht aus dem Loch rauskomme. Hoffe das wäre dann in Ordnung. Herzlichen Dank!


----------



## marlo (4. Apr 2018)

hier noch n link:
http://www.thejavageek.com/2014/01/12/jpa-crud-example/

achja, treiber müssen schon richtig konfiguriert sein..also ganz ohne jdbc gehts nicht ^^


----------



## stg (4. Apr 2018)

Nimm dir für den Einstieg lieber ein gescheites Buch zur Hand und lerne die Grundlagen anständig. Insbesondere die Postings von marlo sind inhaltlich dermaßen unzutreffend, dass man nur davon ausgehen kann, dass er hier entweder trollt, oder aber schlicht keine Ahnung von der Materie hat.
Achte bei deiner Auswahl einfach darauf, dass das Buch Java EE in der Version 7 oder 8 behandelt. Für das Erlernen der Grundlagen ist Java EE 6 auch noch zu gebrauchen ... alles davor macht aber einfach nur keinen Spaß.


----------



## marlo (4. Apr 2018)

hmm...ich bin grad dabei das thema zu erlernen - stimmt..und gehe auch das java7 ee buch durch..also bei mir läuft die kleine beispiel app jedenfalls..mit xampp, payara server..aber ok


----------



## marlo (8. Apr 2018)

4 tage später und immer noch kein beispiel wo meine postings unzutreffend sind.....

totes forum?
oder nur tolle buch_tip_poster...man kann auch so ganz schnell tolle rankings erreichen - is klar..
oracle bietet btw n java7ee tutorial zum download..aber das weiss man nicht..wenn man nur xxx.
ich versuch wenigstens zu helfen..

@Flown lösch meinen account,dein forum is tot.da verirren sich ja nur optimimisten und werden dann erstmal mit"kauf dir buch" "lern java basics" und anderem mist zugeschissen..lösch meinen account..danke..


----------



## mrBrown (8. Apr 2018)

marlo hat gesagt.:


> 4 tage später und immer noch kein beispiel wo meine postings unzutreffend sind.....


Die gab es auch vorher schon...


marlo hat gesagt.:


> j2EE


Heißt so nicht mehr.


marlo hat gesagt.:


> bei javaEE [...] is ja glassfish dabei..


Unsinn, Glassfish ist einfach nur ein Standard-komformer Webserver.



marlo hat gesagt.:


> jpa unterstützt hibernate, eclipselink und andere..
> 
> default ist glaub ich eclispelink..du erstellst einen connector zur datenbank. und persistence-klassen (macht netbeans auf einen klick selbständig)


JPA unterstützt nicht "hibernate, eclipselink und andere", "hibernate, eclipselink und andere" sind JPA-Implementierungen.



marlo hat gesagt.:


> hier mal auf die schnelle code mit jpa
> [...]


Das Beispiel ist etwas ... ungünstig und sagt nicht wirklich irgendwas aus, außer das du irgendwelchen Code geschrieben hast.



marlo hat gesagt.:


> totes forum?
> oder nur tolle buch_tip_poster...man kann auch so ganz schnell tolle rankings erreichen - is klar..
> oracle bietet btw n java7ee tutorial zum download..aber das weiss man nicht..wenn man nur xxx.
> ich versuch wenigstens zu helfen..
> ...


So ein Forum kann Hilfestellung bei Fragen geben. Was es nicht kann, ist einem den gesamten EE-Stack zu erklären. Da reicht auch ein YouTube-Video nur sehr bedingt, Bücher sind da das geeignetste (und auch wenn du es anders sehen magst, dir würde sicher auch eins helfen).


----------



## lifeisbeautiful (10. Apr 2018)

Ich bedanke mich recht herzlich bei allen die hier aktiv waren. Großes Dankeschön. Ich bin auf jeden Fall um einiges weitergekommen.

Verbindungen wurden erfolgreich hergestellt. Alles läuft stabil. Hut ab!

Ich hätte da jetzt noch eine andere Frage. Mein Ziel ist es mit JavaEE alle Tabellen in einem Datenbank-Schema zu exportieren und in eine andere Datenbank importieren. Welche Klassen und Pakete stellt JavaEE dazu bereit? Im JavaEE 7 Buch konnte ich nichts diesbezüglich finden. Gibt es eventuell Code-Beispiele die ich mir mal anschauen kann, um eine gewisse Orientierung zu bekommen? Versuche wirklich viel herauszufinden, bevor ich mich hier melde. Aber bisher wurde ich nicht fündig..

Ich weiß, dass bei Oracle ein Schema-Export durch das Data Pump realisiert wird. Hier werden dmp-files generiert, die das Schema beinhalten. Wird das in JavaEE ebenso realisiert?

Ich stehe natürlich noch am Anfang. Aber in kleinen Schritten komme ich voran. Vielen Dank!


----------



## stg (10. Apr 2018)

Das solltest du - wie du es von deiner Oracle Datenbank kennst - mit den jeweiligen Datenbank-Mitteln erledigen.


----------



## mrBrown (10. Apr 2018)

uU sind auch Liquibase oder Flyway einen Blick wert


----------

