2016-09-26 8 views
1

APIのバックエンドコードを書き直しています。それは、グラスフィッシュを使用してデータベースのURL、ユーザー名、パスワードを保存していました...Java - DALプロジェクト内のデータベースURL

コードを変更せずにWebサーバーとデータベースを簡単に変更できるように、より良いソリューションを使用したいと思います。

私の考えはweb.xmlの中にデータベース情報(url、username、..)を格納し、baseDAOの中にそれらを取り出すことでした。ここで

は私のプロジェクト構造である

  • RestAPIProject
  • BusinessProject
  • DALProject私はこのクラスを作成することになり、私のDALProject内部
  • DTOProject

public class BaseDAO { 

    public Connection getConnection() { 
     Class.forName("com.mysql.jdbc.Driver"); 
     String url = "jdbc:mysql://localhost:3306/DB"; 
     String name = "root"; 
     String password = ""; 

     Connection con = DriverManager.getConnection(url, name, password); 
     return con; 
    } 
} 

public class UserDAO extends BaseDAO { 

    public User getAll() { 
     Connection con = getConnection(); 
     ... 
    } 
} 

これらのデータベースの情報はどのように保存できますか?モジュラー化するベストプラクティスは何ですか?私はいつでもデータベースを簡単に変更する必要があります。

+0

あなたはJNDIデータソースを使用することができますサーバー上では、Java EEの標準です。しかし、どのサーバーを使用していますか? –

+0

現時点ではPostgreSQLデータベースですが、それはOracleに変更される可能性があります – Weedoze

+0

私はGlassfishでJNDIデータソースを使用することができるアプリケーションサーバーについて語ります。 –

答えて

0

最良の方法は、application.propertiesファイルに保管し、必要なときにそれを変更することです:

# Details for datasource 
application.db.driver = com.mysql.jdbc.Driver 
application.db.url = jdbc:mysql://localhost:3306/DB 
application.db.username = root 
application.db.password = 

次に、あなたがあなたのコンフィグレーションBeanでそれを使用することができます。

@Configuration 
@PropertySource("application.properties") 
public class DataConfig { 
    @Autowired 
    private Environment env; 

    @Bean 
    public DataSource dataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName(env.getProperty("application.db.driver")); 
     dataSource.setUrl(env.getProperty("application.db.url")); 
     dataSource.setUsername(env.getProperty("application.db.username")); 
     dataSource.setPassword(env.getProperty("application.db.password")); 
     return dataSource; 
    } 
} 
関連する問題