Erro ao gravar no banco de dados

Estou fazendo um cadastro de funcionário e está apresentando o seguinte erro:

Exception in thread “main” java.lang.NullPointerException
at br.com.DBsistema.dao.FuncionarioDAO.salvar(FuncionarioDAO.java:25)
at br.com.DBsistema.dao.FuncionarioDAO.main(FuncionarioDAO.java:45)

Minha classe DAO:

public class FuncionarioDAO {

	public void salvar(Funcionario funcionario)throws SQLException{
		StringBuilder sql = new StringBuilder();
		sql.append("INSERT INTO tblfuncionario");
		sql.append("(nomefunc,cargofunc,senha)");
		sql.append("VALUES(?, ?, ?)");
		
		Connection conexao = ConexaoFabrica.conectar();
		
		PreparedStatement comando = conexao.prepareStatement(sql.toString());
		
		comando.setString(1, funcionario.getNomefunc());
		comando.setString(2, funcionario.getCargofunc());
		comando.setLong(3, funcionario.getSenha());
		
		comando.executeUpdate();
		
	}

	//Testando o Insert
	public static void main(String[] args) {
		
		Funcionario f1 = new Funcionario();
		f1.setNomefunc("Anderson");
		
		Funcionario f2 = new Funcionario();
		f2.setCargofunc("Analista");
		
		Funcionario f3 = new Funcionario();
		f3.setSenha(123456L);
		
		FuncionarioDAO fudao = new FuncionarioDAO();
		
		try {
			fudao.salvar(f1);
			fudao.salvar(f2);
			fudao.salvar(f3);
			
			System.out.println("Fabricantes salvos");
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Ocorreu erro ao salvar um dos fabricantes");
		}
		
	}

}

Minha conexão está assim:

public class ConexaoFabrica {

private static final String USUARIO = "root";
private static final String SENHA = "123456";
private static final String URL = "jdbc:mysql://localhost:3306/dbsistema?useSSL=false";

public static Connection conectar()throws SQLException{
	DriverManager.registerDriver(new com.mysql.jdbc.Driver());
	Connection conexao = (Connection)DriverManager.getConnection(URL,USUARIO,SENHA);
	return conexao;
	
}

//Teste de conexao
	public static void main(String[] args) {
		try {
			Connection conexao = ConexaoFabrica.conectar();
			System.out.println("Conexao realizada com sucesso");
		} catch (SQLException ex) {
			ex.printStackTrace();
			System.out.println("Erro na conexao");
		}
	}

}

O teste de conexão deu certo. Mas quando rodo o teste do insert esta apresentando este erro.

Porque vc instância 3 objetos ? (f1,f2,f3) E cada objeto você popula só um atributo ?

Funcionario f1 = new Funcionario();
f1.setNomefunc(“Anderson”);

comando.setString(2, funcionario.getCargofunc()); >>>>>> pensa esse funcionário sendo uma instância de
f1

Qual o cargo desse funcionário ? E qual senha ?

Sim … Cada objeto só popula um Atributo.

Estou querendo inserir as informações no banco de dados. Para isso criei uma instancia para cada atributo . E passei os valores :

                    Funcionario f1 = new Funcionario();
		f1.setNomefunc("Anderson");
		
		Funcionario f2 = new Funcionario();
		f2.setCargofunc("Analista");
		
		Funcionario f3 = new Funcionario();
		f3.setSenha(123456L);

Porque voce não usa o mesmo objeto ?

Fiz o teste com um só objeto e deu certo. Estava fazendo confusão.Obrigado.