Como pegar Id no JcomboBox

Prezados, boa noite.

Tenho uma aplicação desktop e nela possui um JcomboBox que é carregado com a cidade e cep existentes no banco, minha duvida é a seguinte, como faço para pegar o Id da cidade pelo JcomboBox?

meu procedimento para carregar o box é

private void carregaBoxCidade(){
try
{
Connection con = Conexao.getConnetion();
PreparedStatement pstm;
ResultSet rs;

          String sql = "select * from cidade;";

          pstm = con.prepareStatement(sql);                
          rs   = pstm.executeQuery(sql);

          while(rs.next())
          {
                  cbBoxCidades.addItem(rs.getString("nome") +" - "+rs.getString("cep"));
          }
          Conexao.closeConnection(con, pstm, rs);
      }
      catch(SQLException ErroSql)
      {
          JOptionPane.showMessageDialog(null, "Erro ao carregar comboBox com informações do banco.");
      }  
}

Com orientação a objeto.
O combobox pode aceitar uma classe qualquer.
Ex.:

public class Cidade {

    private final int CODIGO;
    private String nome, estado;
    //restante dos atributos

    //construtor usado para fins de exemplo
    public Cidade(int CODIGO, String nome, String estado) {
        this.CODIGO = CODIGO;
        this.nome = nome;
        this.estado = estado;
    }

    public int getCodigo() {
        return CODIGO;
    }

    @Override
    public String toString() {
        return nome + (CODIGO == 0 ? "" : " (" + estado + ")");
    }

    //getter setter e demais métodos a serem implementados
}

Classe de teste:

import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import javax.swing.JComboBox;

public class Crisis extends javax.swing.JFrame {

    JComboBox<Cidade> comboCidade = new JComboBox<>();

    public Crisis() {
        initComponents();
        setLayout(new BorderLayout());
        povoarCombo(new Cidade(0, "Escolha uma cidade", null), new Cidade(1, "Santos", "SP"), new Cidade(2, "Natal", "RN"));
        add(BorderLayout.NORTH, comboCidade);
    }

    private void povoarCombo(Cidade... arrayLabelCombo) {
        //adicionando elementos
        comboCidade.setModel(new javax.swing.DefaultComboBoxModel<>(arrayLabelCombo));
        //monitorando um evento, necessidade questionável pois depende do tipo de implementação
        comboCidade.addItemListener((ItemEvent ie) -> {
            if (ie.getStateChange() == ItemEvent.SELECTED) {
                System.out.println(((Cidade) ie.getItem()).getCodigo());
            }
        });
    }
   //Restante da codificação omitida.