Data Access Object - Beispiel

Status
Nicht offen für weitere Antworten.

Mark110

Bekanntes Mitglied
Hallo!

ich lese mich gerade zu dem Thema DAO ein. Leider finde ich das dazugehörige Javabeispiel zu umfangreich.
Vorraussetzung:

Oracle Datenbank zugriff via JDBC

Wie baue ich die einzelnen Klassen?

Ich habe eine Datenbanktabelle LKW

Lkw von
Lkw nach
Lkw name etc


Ich möchte lediglich eine Methode getLKW

Mein Ansatz war, dass ich zum halten dieser Daten eine Klasse LKWBean habe (Alle Attribute der Datenbanktabelle LKW) mit gettern und settern zu versheen.

dann habe ich eine Klasse LKWList mit der methode getLKW <LKWBean>
sowie eine Klasse LKWDao mit methoden:

getLkw()
setupDatasource()
printDataSourceStats()
shutdownDatasource()


Wie würdet ihr sowas machen?
Habe ich das Thema überhaupt richtig verstanden?

Am liebsten wäre mir ein allgemeines beispiel und dann der verweis auf meine idee (was ist daran schlecht/gut)
 
M

maki

Gast
Wozu diese Methoden?

setupDatasource()
printDataSourceStats()
shutdownDatasource()
 

ARadauer

Top Contributor
ich würde dem objekt nach aussen keine methoden um die verbindung aufzubauen. ich hab ein objekt, dem sag ich speicher mir einen lkw, lade mir alle lkws... die verbindung ist mir egal, das muss das dao schon selber wissen.


ich verwende auch gerne einen selbstgeschriebenen connection pool, damit die verbindung nicht immer wieder aufgebaut werden muss (dauert meistens länger als das eigentliche query)
kannst dir ja das mal ansehen http://www.java2s.com/Code/Java/Apache-Common/Connection-Pool.htm
 

Mark110

Bekanntes Mitglied
Code:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

public class LkwDAO {
	
	private static final String QUERY = "select * from dtb_ot t where t.kunde=68770 AND rownum<2";
	
	public LkwList getLkw() {

		DataSource dataSource = null;
		Connection conn = null;
		Statement stmt = null;
		
		LkwList lkwList = new LkwList();
		
		
		try {
			dataSource = setupDataSource("jdbc:oracle:thin´.....");		
			conn = dataSource.getConnection();
			stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(QUERY);
			while (rs.next()) {
				LkwBean lb = new LkwBean();
				lb.setKdnummer("5");
				lb.setVonPLZ("53424");
				lb.setVonOrt("Remagen");
				lb.setNachPLZ("51103");
				lb.setAufbau("1");
				lb.setAdr(false);
				lb.setGliederzug(false);
				lb.setSattelzug(false);
				lb.setKlein_fahrz(true);
				lb.setLaengeMotor("12");
				lb.setGewichtMotor("14");
				lb.setLaengeHaenger("34");
				lb.setGewichtHaenger("54");
				lb.setIBemerkung("test");
				lb.setBemerkung("beeeemerkung");
				
				try {
					lkwList.getLkw().add(lb);
					
				} catch (NullPointerException e) {
					System.out.println("Es trat eine Nullpointer Exception!");
				}

			}
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("SQL Fehler!");
		} finally {
			if (null != conn) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
					System.out.println("Connection Close Fehler");
				}
			}
		}
		return lkwList;
		
	}
	
	public static DataSource setupDataSource(String connectURI) {
		BasicDataSource ds = new BasicDataSource();
		ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		ds.setUsername("user");
		ds.setPassword("pw");
		ds.setUrl(connectURI);
		return ds;
	}

	public static void printDataSourceStats(DataSource ds) throws SQLException {
		BasicDataSource bds = (BasicDataSource) ds;
		System.out.println("NumActive: " + bds.getNumActive());
		System.out.println("NumIdle: " + bds.getNumIdle());
	}

	public static void shutdownDataSource(DataSource ds) throws SQLException {
		BasicDataSource bds = (BasicDataSource) ds;
		bds.close();
	}
	
}

So sieht mein code aus.

die bibliothek connection-pool habe ich in eclipse bereits eingebunden.

Ich erhalte auch eine Fehlermeldung beim setzen der Liste (Warum eigentlich?): Es trat eine Nullpointer Exception!
 
M

maki

Gast
DAOs kommen übrigens immer mit einer DAO Factory, die kümmert sich um die Connections.

Welches Beispiel liest du eigentlich?
 
M

maki

Gast
>> ist mit factory

natürlich, was denn auch sonst ;)

Solltest bdir das Beispiel nochmals ansehen, viele wichtige Dinge drinnen.
Kannst dich ja auch eine DB konzentrieren, brrauchst auch keine abtrakte Factory, eine konkrete reicht bei einer DB.
 
G

Gast

Gast
Darf ich dazu auch noch einmal eine Frage stellen ?

Ich verwende beim DAO Pattern eine DB Klasse. Wo muss diese denn instatiiert werden ?

Ich mache das derzeit in den Daos ansich.Wäre es besser , diese s über die Factory abzuwickeln ?
 
M

maki

Gast
Was soll denn eine DB Klasse sein?

Mit einer DaoFactory und Daos ist diese überflüssig.

Wenn du fragen hast, nicht zögern, dafür ist das Forum ja da.
 

y0dA

Top Contributor
Ich nehme an, eine DB-Klasse repräsentiert ebenfalls Methoden zur Interaktion mit der DB -die halt auf kein bestimmtes Objekt passen?
 
M

maki

Gast
Glaube eher dass die DB Klasse die Cponneciton etc. macht, dass ist Aufgabe der Factory ;)
 
G

Gast

Gast
Dann kann ich doch auch die DBConnection in der Factoray aufrufen, anstatt es in der DAO zu tun.

Meine DB Klasse lädt über Properties die Verbindungseinstellungen und lädt dden DB Treiber.

Im Anschluß wird eine Conntection erstellt.

Dann sind aber auch Funktionen zur Ausführung der Befehle vorhanden.

execute() und Funktionen zum Zählen der betroffenen Datensätze , etc.

Das mache ich also an einer zentralen Stelle.

Wie macht Ihr das denn ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Anleitung zum Data Access Object Pattern Java Basics - Anfänger-Themen 2
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
D FTP Download Data Java Basics - Anfänger-Themen 7
B Input/Output Data / Buffer / File Outstream Inputstream Java Basics - Anfänger-Themen 2
G Error: "No character data is allowed" Java Basics - Anfänger-Themen 6
S Input/Output Data-Input/Output-Stream Java Basics - Anfänger-Themen 2
Spin Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: data must Java Basics - Anfänger-Themen 10
Developer_X Sav-Data reader, fehler Java Basics - Anfänger-Themen 2
H Überprüfen ob Request mit enctype=multipart/form-data Java Basics - Anfänger-Themen 2
josfe1234 Hilfe access denied ("java.io.FilePermission" " " "read") Java Basics - Anfänger-Themen 12
M Access Modifier oder so ähnlich Java Basics - Anfänger-Themen 6
N DB Access conection Java Basics - Anfänger-Themen 6
T Access mit Java verbinden im netzwerk Java Basics - Anfänger-Themen 3
S JNA - Java Native Access - wie ? Java Basics - Anfänger-Themen 2
E To count password and username access possibility Java Basics - Anfänger-Themen 0
M Access restriction Problem, obwohl library eingebunden ist Java Basics - Anfänger-Themen 0
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
Z Access Control Exception Java Basics - Anfänger-Themen 10
M Erste Schritte Java programm unable to access Java Basics - Anfänger-Themen 10
S java.security.AccessControlException: access denied Java Basics - Anfänger-Themen 4
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
T access modifiers Java Basics - Anfänger-Themen 4
D Access Abfrage - Results direkt als Array erhalten Java Basics - Anfänger-Themen 2
T java.security.AccessControlException: access denied (java.net.SocketPermission Java Basics - Anfänger-Themen 2
C Package einbinden - "cannot access" Java Basics - Anfänger-Themen 5
J Access-Verbindung Java Basics - Anfänger-Themen 2
W OOP Datum aus Access in Textfeld schreiben ohne Stunden/Minuten/Sekunden Java Basics - Anfänger-Themen 2
neurox Was heißt: Access restriction ... ? Java Basics - Anfänger-Themen 3
A Access restriction / gl4java Java Basics - Anfänger-Themen 3
hdi NPE (access$1) Java Basics - Anfänger-Themen 6
R DerbyDB nach MS Access kopieren Java Basics - Anfänger-Themen 41
S access denied (java.io.FilePermission read) Java Basics - Anfänger-Themen 3
M Access to HSQLDB Converter Java Basics - Anfänger-Themen 2
D Anfängerfrage N. Office Access NOA: setHidden und dann . Java Basics - Anfänger-Themen 2
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2
B access denied Java Basics - Anfänger-Themen 7
H . cannot access Person Java Basics - Anfänger-Themen 5
V Änderungsdatum aus einer Access File auslesen Java Basics - Anfänger-Themen 5
S Maske wie in Access Java Basics - Anfänger-Themen 8
N Applet - Datenbankzugrriff - SocketPermission Access denied Java Basics - Anfänger-Themen 2
D Dateizugriff - An bestimmter Position Lesen (Random Access) Java Basics - Anfänger-Themen 2
J java und jdbc mit access Java Basics - Anfänger-Themen 3
T Access Datenbank in Java (Eclipse) einbinden Java Basics - Anfänger-Themen 10
G access static field Java Basics - Anfänger-Themen 2
D Random Access File: Letzte Zeile löschen Java Basics - Anfänger-Themen 2
D Random Access File: seek() Problem Java Basics - Anfänger-Themen 5
S Ursache dieser Fehlermeldung (access dinied) Java Basics - Anfänger-Themen 3
F Read access to enclosing field xy is emulated . Java Basics - Anfänger-Themen 2
S MS Access und JApplet Java Basics - Anfänger-Themen 12
F Access Datenbank-Tabelle erzeugen Java Basics - Anfänger-Themen 5
M Applet access denied Java Basics - Anfänger-Themen 4
U public, private, protected und "default access" - Java Basics - Anfänger-Themen 14
G ACCESS Anfall Java Basics - Anfänger-Themen 3
V Daten aus Access in eine Tabelle schreiben Java Basics - Anfänger-Themen 3
G Access Modifiers Java Basics - Anfänger-Themen 8
B Angabe import-Verzeichnis & Error704:cannot access direc Java Basics - Anfänger-Themen 6
R Access Datenbankabfrage Java Basics - Anfänger-Themen 2
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
thobren Object[][] Java Basics - Anfänger-Themen 8
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
I JaxB und Klasse "Object" ? Java Basics - Anfänger-Themen 7
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
B JaxB - speichern vom Typ "Object" Java Basics - Anfänger-Themen 8
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
M Java Klasse Object Java Basics - Anfänger-Themen 5
G Java Object value und entity? Java Basics - Anfänger-Themen 2
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
I Object-Oriented Programming, Objekt erzeugen Java Basics - Anfänger-Themen 1
P Zugreifen auf Object[] Java Basics - Anfänger-Themen 4
B if(object== null) abkürzen? Java Basics - Anfänger-Themen 6
A Object to Map Java Basics - Anfänger-Themen 2
D Object in ArrayList ausgeben Java Basics - Anfänger-Themen 24
L Input/Output Datei Object aus resources Java Basics - Anfänger-Themen 1
T HashSet in List-Object Java Basics - Anfänger-Themen 5
H Datentypen for(typ a : b) nur typ Object möglich ? Java Basics - Anfänger-Themen 2
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
T Object zu Char zu String Java Basics - Anfänger-Themen 6
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
F Methoden Object.clone() Java Basics - Anfänger-Themen 1
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
A JavaScript Object Notation einbinden mittels Maven Java Basics - Anfänger-Themen 7
F Unique Object Java Basics - Anfänger-Themen 3
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
O Object Java Basics - Anfänger-Themen 4
O nullpointerExce. Gui Object weitergabe Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben