Sistema Basico de Cadastro

Estou desenvolvendo meu primeiro sistema de banco em java. Uso o eclipse e mysql.
Encontrei uma duvida como eu faço uma primary key com auto incremento na classe ?

Tentei usar um atributo static para ir incrementando a cada objeto criado.
Mas não deu certo …

Pois cada vez que eu rodo o programa ele zera.

Alguem sabe como eu devo fazer isso …

Vou postar meu codigo.

package filipe.modelo;

public class Filme {

	private String nome;

	private String genero;

	private String lancamento;

	private String faixaEtaria;

	private double diaria;

	private static long ID;

	private long id;

	public Filme() {

		id = ID++;

	}

	public double getDiaria() {
		return diaria;
	}

	public void setDiaria(double diaria) {
		this.diaria = diaria;
	}

	public String getFaixaEtaria() {
		return faixaEtaria;
	}

	public void setFaixaEtaria(String faixaEtaria) {
		this.faixaEtaria = faixaEtaria;
	}

	public String getGenero() {
		return genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

	public String getLancamento() {
		return lancamento;
	}

	public void setLancamento(String lancamento) {
		this.lancamento = lancamento;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public long getId() {
		return id;
	}

}
package filipe.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import filipe.jdbc.FabricaDeConexao;
import filipe.modelo.Filme;

public class FilmeDAO {

	Connection conexao;

	public FilmeDAO() throws SQLException {
		conexao = FabricaDeConexao.getConnection();
	}

	public void adiciona(Filme filme) throws SQLException {

		String sql = "INSERT INTO filmes (nome,genero,lancamento,faixa_etaria,diaria) VALUES (?,?,?,?,?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);

                stmt.setLong(1, filme.getId());
		stmt.setString(2, filme.getNome());
		stmt.setString(3, filme.getGenero());
		stmt.setString(4, filme.getLancamento());
		stmt.setString(5, filme.getFaixaEtaria());
		stmt.setDouble(6, filme.getDiaria());

		stmt.execute();
		stmt.close();

	}

	public void altera(Filme filme) {

	}

	public void remove(Filme filme) {

	}

	public List<Filme> listaFilmes() {
		return null;

	}

}
package filipe.testes;

import java.sql.SQLException;
import java.util.Scanner;

import filipe.dao.FilmeDAO;
import filipe.modelo.Filme;

public class TestaAdiciona {

	public static void main(String[] args) throws SQLException {

		Scanner teclado = new Scanner(System.in);

		Filme filme = new Filme();

		System.out.print("Nome: ");
		filme.setNome(teclado.nextLine());
		System.out.print("Genero: ");
		filme.setGenero(teclado.nextLine());
		System.out.print("Lançamento: ");
		filme.setLancamento(teclado.nextLine());
		System.out.print("Faixa Etaria: ");
		filme.setFaixaEtaria(teclado.nextLine());
		System.out.print("Diaria: ");
		filme.setDiaria(teclado.nextDouble());

		FilmeDAO filmeDAO = new FilmeDAO();

		filmeDAO.adiciona(filme);

		System.out.println("Filme Gravado!");

	}

}