статический глобальный объект - PullRequest
0 голосов
/ 12 января 2012

У меня есть класс с одним статическим методом

makeConnection

Метод возвращает объект Connection для дальнейших операций JDBC. Есть ли возможность создать глобальное поле подключения с результатом этого метода «возврат»? Я хотел бы использовать это поле везде, где мне нужно.

public class Connection 
{
    public static Connection makeConnection() throws IOException, SQLException
    {
        try 
        {
            Class.forName("org.postgresql.Driver");

            Properties props = new Properties();
            FileInputStream in = new FileInputStream("dataBase.properties");
            props.load(in);
            in.close();

            String drivers = props.getProperty("jdbc.drivers");
            if(drivers != null) System.setProperty("jdbc.drivers", drivers);
            String url = props.getProperty("jdbc.url");
            String username = props.getProperty("jdbc.username");
            String password = props.getProperty("jdbc.password");

            return DriverManager.getConnection(url, username,password);
        }
        catch (ClassNotFoundException e) 
        {
        return null;
    }
        catch(IOException e)
        {
            return null;
        }  
        catch(SQLException e)
        {
            return null;
        }    
    }
}

Ответы [ 4 ]

1 голос
/ 12 января 2012

Возможно, но фабрика соединений лучше, чем соединение. Однако статическая переменная не является хорошей идеей для управления соединениями в течение жизненного цикла.

Хороший пул соединений позаботится о многих проблемах для вас, таких как одновременный доступ, обнаружение тайм-аута, перезапуск активных соединений, автоматическая очистка мертвых соединений.

0 голосов
/ 12 января 2012

Вы можете инициализировать статическую переменную в блоке статического инициализатора:

class Foo {
   public static Connection conn;

   static {
      try {
         conn = makeConnection();
      } catch(...) {
         ...
      }
   }
}
0 голосов
/ 12 января 2012

Это , а не способ обработки соединений ... но он может дать вам представление о том, как решить подобные проблемы:

public class Wombat
{
    public static Wombat getWombat () 
    {
      if (theWombat == null)
        theWombat = new Wombat ();
      return theWombat;
    }

    private static Wombat theWombat= null;
}
0 голосов
/ 12 января 2012

Вы можете сделать это:

class Foo {

    public static Connection conn = bar();

    private static Connection bar() {
        ...
    }
}

Это то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...