nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

"Globale Objekte" durch statische Va riablen/Methoden ermöglichen?

Von: Egon Schmid (egon.schmid@dischingen.de) [Profil]
Datum: 28.10.2009 10:56
Message-ID: <hc94fv$p2u$02$1@news.t-online.com>
Newsgroup: de.comp.lang.java
In Java gibt es keine globalen Variablen/Objekte wie in anderen
Sprachen, z.B. PHP.

Wenn ein Objekt eine Information benötigt, muss man diesem diese
irgendwie übergeben, in der Regel über einen Konstruktor oder einer
set()-Methode.

Es gäbe auch einen anderen Weg, über statische Variablen.

Bei einer Datenbank-Anwendung wird beispielsweise die Connection in
sämtlichen Objekten benötigt, in dem Beispiel die Klasse "MyTable".
Ich hole mir diese über die statische Methode
MyDatabase.getConnection().

Es führt zu einer Exception, wenn der Konstruktor MyTable() vorm
Konstruktur MyDatabase() aufgerufen wird, was auch Sinn macht.

Es führt auch zu Problemen, wenn der Konstruktur MyDatabase() mehrmals
aufgerufen wird, das Feld wird dann überschrieben. Es würde Sinn machen,
hier eine Exception dann auszulösen.

----- MyDatabase.java -----
public class MyDatabase {
private static Connection con = null;

public MyDatabase() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test",
"user",
"password");
} catch (Exception ex) {
Logger.getLogger(
MyDatabase.class.getName())
.log(Level.SEVERE, null, ex);
System.exit(1);
}
System.out.println("Verbindung erfolgreich");
}

public static Connection getConnection() {
return con;
}
}

----- MyTable.java -----
public class MyTable {

Connection con;
ResultSet rs;
Statement stmt;

public MyTable() {
try {
con = MyDatabase.getConnection();
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT * FROM test");
rs.last();
System.out.print("Datensätze: ");
System.out.println(rs.getRow());
rs.first();
} catch (SQLException ex) {
Logger.getLogger(
MyDatabase.class.getName())
.log(Level.SEVERE, null, ex);
}

}
}


Ist diese Lösung in Ordnung, oder gibt es bessere Möglichkeiten?

viele Grüße

Egon Schmid

[ Auf dieses Posting antworten ]

Antworten