Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Senhas, roots na aplicação Java - Como fazer do jeito Profissional.

Olá Pessoal , bom dia !

Fiquei com uma dúvida referente a passagem de parâmetros no banco de dados, tais como endereço do banco, senha e usuário.

Qual a forma correta e profissional de eu colocar esses dados no programa ?

package LojaVirtual.adalberto.com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class TestaConexao {

    public static void main(String[] args) throws SQLException {
        // TODO Auto-generated method stub
        //Connection connection = DriverManager.getConnection(url, user, password);
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/loja_virtual?"
                + "useTimezone=UTC","root","123456");
        connection.close();
    }

}

Em outras linguagens se trabalha com o .env um arquivo onde ficam a url , usuário e senha . Essa é a maneira correta de fazer isso em java ? Se for como eu posso fazer isso , existe alguma lib nativa do Java para lidar com variáveis de ambiente ?

Muito obrigado por sua ajuda.

6 respostas
solução!

Olá Adalberto

A forma correta e profissional de armazenar informações sensíveis, como endereço do banco, senha e usuário, em uma aplicação Java é utilizando variáveis de ambiente.

No Java, você pode acessar as variáveis de ambiente por meio da classe System. Para definir as variáveis de ambiente, você pode fazer isso diretamente no sistema operacional ou utilizar um arquivo de propriedades, como o .env que você mencionou em outras linguagens.

Para utilizar um arquivo de propriedades, você pode utilizar a biblioteca dotenv-java, que é uma implementação do .env para Java. Com essa biblioteca, você pode definir as variáveis de ambiente em um arquivo .env e carregá-las em seu programa Java.

Aqui está um exemplo de como utilizar a biblioteca dotenv-java:

  1. Adicione a dependência no seu arquivo pom.xml (caso esteja utilizando Maven):
<dependency>
    <groupId>io.github.cdimascio</groupId>
    <artifactId>dotenv-java</artifactId>
    <version>2.2.0</version>
</dependency>
  1. Crie um arquivo .env na raiz do seu projeto com as seguintes informações:
DB_URL=jdbc:mysql://localhost/loja_virtual?useTimezone=UTC
DB_USER=root
DB_PASSWORD=123456
  1. No seu código Java, você pode carregar as variáveis de ambiente utilizando o método load() da classe Dotenv:
import io.github.cdimascio.dotenv.Dotenv;

public class TestaConexao {

    public static void main(String[] args) throws SQLException {
        Dotenv dotenv = Dotenv.load();
        
        String url = dotenv.get("DB_URL");
        String user = dotenv.get("DB_USER");
        String password = dotenv.get("DB_PASSWORD");
        
        Connection connection = DriverManager.getConnection(url, user, password);
        connection.close();
    }

}

Dessa forma, você pode armazenar as informações sensíveis em um arquivo separado e não precisa se preocupar em compartilhar essas informações no código-fonte.

Espero ter ajudado e bons estudos!

Adalberto, bom dia.

Assim como você disse normalmente esses parametros eles são passados em um arquivo de propriedades ou yml. Falar para você que acredito que no JDBC se utiliza variaveis de ambiente. Porem conforme você for utilizando JPA/Hibernate ou Spring Data, você vai ver que JPA/Hibernate utiliza uma pasta chamada persistence.xml e no Spring Data é utilizado application.properties ou application.yml.

Bom, até então foi o que eu utilizei na minha jornada, espero ter ajudado.

Obrigado por complementar Maxuel

Otavio,

Eu que agradeço! Eu inclusive não tinha conhecimento de como era utilizado variavel de ambiente

Obrigado Otávio e Maxuel, ajudou bastante aqui para eu fazer de uma maneira mais segura e bem prática. Vou deixar o .env na pasta raiz para ficar mais fácil de manipular.

Opa, eu de novo, para eu aprender mais sobre o assunto que é novo.

Achei interessante esse artigo aqui.

https://medium.com/@cdimascio/dotenv-for-java-and-jvm-languages-43ee0e683549