# Mit JSP eine Datenbankabfrage durch führen.



## xunil1987 (10. Feb 2005)

ich habe das problem das ich mit JSP eine Datenbank abfrage machen möchte. Ich habe auch eine Bean dafür bloss wie mache ich das das man zb bestümmte parameter mit übergeben kann? 


```
<jsp:getproperty name="bean" property="property" /> i
```

aber wenn ich noch mehr informationen für die abfrage brauch: 

zb ich möchte denn Vornamen von Herrn Müller aus Bremen Müllergasse 2 haben. dann muss ich die infos ja mit zum Bean schicken wie mache ich das dann?


----------



## bambi (10. Feb 2005)

also ich habe jetzt nicht ganz genau verstanden wo und wie du die DB-abfrage machen willst, aber hier mal, was ich immer mache:

jsp: parameter einlesen und als parameter weitergeben an ein servlet
servlet: parameter auslesen und methode der session bean aufrufen (parameter an methode uebergeben)
session bean: db-abfrage machen
servlet: forward an jsp und da die ausgabe anzeigen...

also was ist jetzt genau dein problem? hast du eventuell code da


----------



## bronks (10. Feb 2005)

Vielleicht hilft das (Datenabfrage mit JSTL): http://www.java-forum.org/de/viewtopic.php?t=12214


----------



## Gast (14. Feb 2005)

@bambi, ich mache meine DB-Abfragen immer in einer Methode des Servlets (oder eine andere Klasse), die Session-Beans verwende ich nur um die Session-Daten zu speichern. 
Gibt es Gründe dafür warum du die DB-Abfrage in der Session-Bean machst?


----------



## bambi (14. Feb 2005)

Das ist doch der ganze Sinn von Session Beans, richtig!?!
Das Entity ist eben die Repraesentation der DB-Daten und die Session Bean enthaelt die ganze Geschaeftslogik. Auf die Session Bean kann dann mit anderen Klassen wieder zugegriffen werden  - um es einfach zu trennen.


----------



## ak (15. Feb 2005)

Session-Beans speichern Session-Daten und sollten meiner bescheidenen Meinung nach keine DB-Zugriffe vollziehen. Ich mache das immer in den Servlets oder anderen Klassen und speichere dann die DB-Werte in den entsprechenden Session-Beans über die set-Methoden.

Gibt es da Einwände?


----------



## bronks (15. Feb 2005)

ak hat gesagt.:
			
		

> Session-Beans speichern Session-Daten und sollten meiner bescheidenen Meinung nach keine DB-Zugriffe vollziehen.



Einmal hier: http://my.execpc.com/~gopalan/java/ejb/session.html
Und zum anderen: Die SampleApp die bei Struts dabei ist, weil das dort ähnlich gemacht wird.




			
				ak hat gesagt.:
			
		

> Ich mache das immer in den Servlets oder anderen Klassen und speichere dann die DB-Werte in den entsprechenden Session-Beans über die set-Methoden.
> 
> Gibt es da Einwände?



Zum hobbymäßigen herumwurschteln daheim ist es schon ok.  8)  Als ernstzunehmender Amateur oder im Profibereich sollte man sich daran orientieren: http://java.sun.com/blueprints/corej2eepatterns/Patterns/

Es gibt viele lohnende SampleApps in denen gepflegter Programmierstil gezeigt wird.




*@xunil1987:*
Du hast die o.g. Möglichkeit mit der JSTL, die auch zum gepflegten umgang mit JSP gehört. Bei der anderen Möglichkeit bleibt Dir nichts anderes übrig, als Dich in das Thema ordentlich einzuarbeiten und reinzusteigern, weil Du sonst immer etwas zum nachbessern und verändern haben wirst, wenn Du Dich nicht davor in einer Sackgasse verfährst.


----------



## ak (15. Feb 2005)

@bronks, mit Session-Beans sind hier einfache JavaBeans gemeint in denen mit get und set-Methoden Session-Daten gespeichert werden (keine EJB's). Siehe ersten Post, wo steht:
...

```
<jsp:getproperty name="bean" property="property" />
```
...

Die struts-sample apps sind sehr klein und übersichtlich, sie sollen nur zeigen was geht und was nicht.

Jetzt interessiert mich aber mal ob ich da richtig liege. 
Gehören DB-Zugriffe in einfache JavaBeans, wenn ich noch Servlets, JSP's und Klassen (zum Zugriff auf die DB) habe?


----------



## bambi (15. Feb 2005)

Warum sind denn jetzt session beans ploetzlich JavaBeans??? Also ich hab' mit SessionBeans auch SessionBeans (EJB) gemeint.
Hab noch nie gehoert, dass jemand zu JavaBeans SessionBeans sagt - hat ja auch ueberhaupt nix miteinander zu tun.

Und NEIN - NIE DB-Zugriffe in JavaBeans - bloss nicht!!! DB-Zugriffe gehoeren definitiv in SessionBeans (EJB) und nirgens anders hin!!! 

Also normalerweise ist das ja so aufgebaut:

JSP <---> Servlet <--->  SessionBeans(EJB) <---> EntityBean (EJB)

Die JavaBeans (mit Getter und Setter) werden verwendet um Daten zwischen dem JSP und dem Servlet auszutauschen.


----------



## ak (15. Feb 2005)

Gut dass wir nochmal drüber geredet haben 

Findest du es nicht etwas übertrieben einem Anfänger wie xunil1987 zu EJB's zu raten?
Das ist so als wenn jemand Fahrrad fahren lernen möchte und du ihn dazu verdonnerst einen Führerschein für LKW's zu machen.

Viele Firmen verwenden in ihren Java-Webanwendungen keine EJB's , da dies einfach zuviel des guten ist. Und diese Anwendungen sind wahrlich nicht "klein". Es gibt sogar einen Trend weg von EJB's hin zu Pojos, laut einigen Artikeln im Javamagazin jedenfalls.

Javabeans kann man auch verwenden um Daten zwischen mehreren JSP's einer Session oder Webanwendung (scope application) auszutauschen. Eben um die Daten einer Session (Webanwendung) zu verwalten.


----------



## bambi (15. Feb 2005)

Hey, sicher gibt's noch andere Moeglichkeiten eine DB-Abfrage zu machen - bestreit ich ja auch gar nicht. 

Wir waren doch aber gerade beim Thema SessionBeans (EJB), oder? Und mal ehrlich eine DB-Abfrage in 'ner JavaBean  hat sich fuer micht *uahhh* ganz boese angehoert - war aber nur 'ne Frage von gleichen Namen fuer unterschiedliche Sachen...

Sicher kann man JavaBeans noch ganz anders verwenden. Ich benutze auch nicht nur Servlets um mit JSPs zu arbeiten...

Das ist ja gerade das schoene am Proggen. Es gibt 1000... verschiedene Wege was zu machen und nicht immer nur den "Einen und Einzigen"... Aber irgendwo muss man ja mal anfangen, right? 
Also ich sach nur: jedem so wie er's am besten findet...  :lol:


----------



## Bleiglanz (16. Feb 2005)

@ak

ACK, für lesende Zugriffe (bei denen der Transaktionslevel oft egal ist, weil einfach in einer HTML-Seite eine Tabelle angezeigt werden soll) ist der Umweg

Servlet -> SessionBean -> Query -> Liste von Value Objects -> Servlet -> JSP

totaler Nonsense. Schon das Standardbuch J2EE Patterns (von Sun) empfiehlt da den Fast Lane Reader 

d.h. einfach das SQL direkt an die DB durchreichen mit JDBC und aus dem ResultSet das HTML basteln


----------



## ak (16. Feb 2005)

Ich schae mir mal den "Fast Lane Reader" an.


----------



## Guest (2. Feb 2006)

bronks hat gesagt.:
			
		

> ak hat gesagt.:
> 
> 
> 
> ...


----------

