[Duvidas]Passar um valor int para um metodo set que recebe como parametro um objeto, e Datas

Boa tarde Galera,

Estou com algumas duvidas em um trabalho de faculdade, é bem básica, mais não estou encontrando a resposta na internet.

Tenho que fazer uma classe de teste para verificar se outras classes minhas conseguem inserir informações nos campos das minhas tabelas no banco de dados. E tenho uma classe de teste que não consigo desenvolver por não saber trabalhar direito com OO e também não saber trabalhar direito com a classe java.sql.Date

Vou mostrar abaixo uma das classes que contem as 2 duvidas que tenho de como inserir as informações no banco, irei comentar as linhas que possuo as duvidas.

Classe Teste Compra:

package br.unig.compras.teste;

import br.unig.compras.dao.ControlaBancoDados;
import br.unig.compras.dao.CompraDao;
import br.unig.compras.modelo.Compra;

public class TesteCompra {
   
    public static void main (String args[]) {
        try{

            String data = args[0]; /*Aqui irei passar o argumento contendo a data que deverá ser inserida no banco, não sei como fazer pra transformar uma string em uma data do formato java.sql.Date, se existe algum parse ou outra forma de fazer isto, logo resolvi passar o valor do argumento 0 para uma variavel do tipo string*/

            Integer codcliente = Integer.parseInt(args[1]); /*Aqui preciso passar o argumento contendo o código do cliente que deverá ser inserido na chave estrangeira codcliente da tabela compras, transformei o valor do argumento 1 em um inteiro e adicionei a uma variável do tipo Integer, apesar que terei que passar este código para uma variável do tipo cliente, estou com duvidas de como passar este valor do código do cliente para o banco.*/

                   
            Compra compra = new Compra();

            compra.setData(data); /*Aqui vem o meu primeiro problema no código, como minha variável data é do tipo string, esta linha possui um erro pois o método setData deve recebe como parâmetro um valor do tipo Date, como disse acima, não sei como transformar uma string para uma date da classe java.sql.Date*/

            compra.setCliente(codcliente);/*Aqui vem o meu segundo problema no código, como minha variável é do tipo integer, esta linha possui um erro pois o método SetCliente deve receber como parâmetro um valor(ou objeto, imagino eu) do tipo Cliente (da minha classe cliente), logo não sei de qual forma passar um código para popular a tabela compra através do método setCliente. Se tem que ler um cliente do banco, ou algo do tipo.*/
                                   

            (new CompraDao()).create(compra);
            ControlaBancoDados.getInstancia().confirmaTransacao();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
   
    }   

}

Para servir de referencia no problema segue abaixo minha classe compra e minha classe cliente:

Classe Compra:

package br.unig.compras.modelo;

import java.sql.Date;

public class Compra {

	int codigo;
	Date data;
	Cliente cliente;
	
	public Compra() {
		
	}
	
	public Compra(int c,Date data, Cliente cliente) {
		this.codigo = c;
		this.data = data;
		this.cliente = cliente;
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
}

Classe Cliente:

package br.unig.compras.modelo;

public class Cliente {

	int codigo;
	String nome;
	
	Cliente(){
	
	}
	
	Cliente(int c, String n) {
		this.codigo = c;
		this.nome = n;
	}
	
	public int getCodigo() {
		return this.codigo;
	}
	
	public void setCodigo(int c) {
		this.codigo = c;
	}
	
	public String getNome() {
		return this.nome;
	}
	
	public void setNome(String n) {
		this.nome = n;
	}
	
}

Grato desde já pela ajuda,
Vinicius Miqueloti.

^UP^

Editei o post para tentar deixar mais claro as minhas duvidas, antes estava muito confuso minha explicação (não que agora eu tenha sido claro, mais melhorou).
Quem puder me ajudar nessa, desde já deixo o meu muito obrigado.

ATT,
Miqueloti.