База данных MySQL Java/JDBC — запрос на проектированиеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 База данных MySQL Java/JDBC — запрос на проектирование

Сообщение Anonymous »

Мне просто нужно уточнить, не нарушает ли следующий дизайн лучшие практики объектно-ориентированного проектирования (в отношении реализации базы данных MySQL). Это не масштаб Java EE, а скорее работа для студентов второго курса, и все, что я смог найти в учебных пособиях Oracle, — это рекомендации по проектированию крупномасштабных баз данных с Java, таких как объект доступа к данным.
У меня есть класс, который обрабатывает загрузку драйвера JDBC и базы данных MySQL. Он имеет объекты Connection и Statement, определенные как статические

Код: Выделить всё

/** Enables a connection to the chessleaguedb MySQL database
* @author Erdi Rowlands
*/
public class DatabaseConnection
{
private Console console;    // needed for relevant method to mask console input
private Scanner keyboard;   // reads user input
private String user;        // MySQL user account
private String pass;        // MySQL account password
private String host;        // MySQL host
static Connection conn;     // application needs to communicate with JDBC driver
static Statement st;        // issuing commands against the connection is reqiured

/* When instantiated the JDBC driver attempts to load */
public DatabaseConnection()
{
this.loadDriver();
}

public void loadDriver()
{
try
{
Class.forName ("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e)
{
System.out.println("Could not load the driver");
}
}

public void connectToDatabase()
{
try
{
this.readLogin();
// prompts user to enter login info to console
this.conn = DriverManager.getConnection
("jdbc:mysql://"+host+":3306/chessleaguedb", user, pass);
System.out.println("\nSuccessfully connected to database: "
+ "'chessleaguedb'");
}

catch (SQLException ex)
{
Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
У меня есть класс, который используется для создания и заполнения таблиц базы данных:

Код: Выделить всё

/** Enables the creation and population of the MySQL database 'chessleaguedb' tables
* @author Erdi Rowlands
*/
public class DatabaseTables
{
public DatabaseTables()
{

}

public void createPlayerTable()
{
try
{
DatabaseConnection.st = DatabaseConnection.conn.createStatement();
DatabaseConnection.st.executeUpdate("CREATE TABLE IF NOT EXISTS"
+ "(PlayerName VARCHAR(30)PRIMARY KEY,"
+ "DateOfBirth DATE,"
+ "FIDERating tinyint,"
+ "ClubName FOREIGN KEY fk_club(Clubname) REFERENCES club(ClubName)");
// Create Actor table
}
catch (SQLException ex)
{
Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Нарушаю ли я передовую практику OOD, используя эти статические объекты во втором классе для выполнения команд базы данных? Если нет, я продолжу создавать классы, связанные с хранимыми процедурами и т. д., и буду рад, что не делаю что-то неправильно. Я не хочу, чтобы все было в основном методе естественным образом, и не вижу другого способа обойти эту проблему, кроме загрузки драйвера JDBC и Connection в каждый класс, который в них нуждается (кажется излишним).

Подробнее здесь: https://stackoverflow.com/questions/403 ... sign-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»