Problema em um DAO

Bom estou tentando organizar meu projeto e criei um dao com um insert, mas estou com esses errors:
Exception in thread “main” java.lang.NullPointerException
at javaapplication2.UsuarioDAO.add(UsuarioDAO.java:27)
at javaapplication2.JavaApplication2.main(JavaApplication2.java:22)
: Java returned: 1

Classe principal:

public static void main(String[] args) {
   Usuario u = new Usuario();
   u.setNome("xd");
   u.setSenha("xd");
   UsuarioDAO dao = new UsuarioDAO();
   dao.add(u);
   
}

conexão com banco de dados:

public class ConnectionFactory {
	public Connection getConnection() {
        String url = "jdbc:mysql://localhost:3306/helpsemeq"+"?verifyServerCertificate=false&useSSL=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=America/Sao_Paulo"; 
        String usuario = "root";  
        String senha = ""; 
		Connection result = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			result = DriverManager.getConnection(url, usuario, senha);
                        JOptionPane.showMessageDialog(null,"Sucess");  
			return result;                        
        }  
        catch(Exception e){  
			JOptionPane.showMessageDialog(null, e, "ERRO", JOptionPane.ERROR_MESSAGE);  
        }
		return result;
	}
}

classe Usuario:

public class Usuario {
    private static Usuario instance;
    private Long id;
    private String nome;
    private String senha;
    
    public Usuario(Long id, String nome, String senha){
    this.id=id;
    this.nome=nome;
    this.senha=senha;
    }
    
    public Usuario(String nome, String senha){
    this.nome=nome;
    this.senha=senha;
    }
    
    public Usuario(){
    }
    public static Usuario getInstance() {
        if (instance == null)
            instance = new Usuario();
        return instance;
    }
   public void setId(Long id){
        this.id=id;
    }
    public Long getId(){
        return id;
    }
    public void setNome(String nome){
        this.nome=nome;
    }
    public String getNome(){
        return nome;
    }
    public void setSenha(String senha){
        this.senha=senha;
    }
    public String getsenha(){
        return senha;
    }
}

a classe do DAOUsuario

public class UsuarioDAO extends ConnectionFactory {
    private Connection con;
    
    public UsuarioDAO(){
    }
    public boolean add(Usuario u){
        
        String sql = "INSERT INTO usuario(nome,senha) VALUES(?,?,?)";
        try{
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setString(1, u.getNome());
        stmt.setString(2, u.getsenha());
        return true;
        } catch (SQLException ex){
        Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        return false;
        }
    }
}

bom pelo que vi ao debuggar o problema está nessa parte:

 try{
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setString(1, u.getNome());
        stmt.setString(2, u.getsenha());
        return true;
  }

E agora deixou um post onde ninguém sabe qual é o problema e nem qual é a solução. :frowning:

opa foi apenas uma falta de atenção minha era um error de estrutura de um insert .