Permissões de acesso Menus e Sub Menus Java Netbeans

–No Banco de dados PostgreSQL 9.3 criei 3 Tabelas,

CREATE TABLE tbl_usuario
(
cod_usuario serial NOT NULL,
nome_usuario character varying(40) NOT NULL,
cod_departamento integer NOT NULL,
login_usuario character varying(30) NOT NULL,
senha_usuario character varying(30) NOT NULL,
status_usuario character varying(14) NOT NULL,
cod_empresa integer NOT NULL,
CONSTRAINT “PK_COD_USUARIO” PRIMARY KEY (cod_usuario),
CONSTRAINT “UK_LOGIN_USUARIO” UNIQUE (login_usuario)
)
WITH (
OIDS=FALSE
);
ALTER TABLE tbl_usuario
OWNER TO postgres;

CREATE TABLE tbl_nivel_permissao
(
cod_permissao serial NOT NULL,
descricao_permissao character varying(60) NOT NULL,
CONSTRAINT pk_permissao_usuario PRIMARY KEY (cod_permissao)
)
WITH (
OIDS=FALSE
);
ALTER TABLE tbl_nivel_permissao
OWNER TO postgres;

CREATE TABLE tbl_permissao_usuario
(
cod_permissao integer,
cod_usuario integer,
CONSTRAINT fk_cod_permissao FOREIGN KEY (cod_permissao)
REFERENCES tbl_nivel_permissao (cod_permissao) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_cod_usuario FOREIGN KEY (cod_usuario)
REFERENCES tbl_usuario (cod_usuario) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE tbl_permissao_usuario
OWNER TO postgres;

–Criei uma classe CadastroUsuario e dentro dela o metodo abaixo:

public boolean getPermissoes(String login, String permissao) {
boolean permissaoExistente = false;

    try {
        con = conexaoDB.getConexao();
        stm = con.prepareStatement(sql = "SELECT U.LOGIN_USUARIO, P.DESCRICAO_PERMISSAO FROM\n"
                + "TBL_USUARIO U, TBL_PERMISSAO_USUARIO N, TBL_NIVEL_PERMISSAO P WHERE\n"
                + "U.COD_USUARIO = N.COD_USUARIO AND P.COD_PERMISSAO = N.COD_PERMISSAO AND U.LOGIN_USUARIO = ? AND P.DESCRICAO_PERMISSAO = ?;");

        stm.setString(1, login);
        stm.setString(2, permissao);
        rs = stm.executeQuery();
        if (rs.next()) {

            permissaoExistente = true;
            //System.out.println(rs.getString("DESCRICAO_PERMISSAO"));

        }

    } catch (SQLException ex) {
        Logger.getLogger(CadastroUsuario.class.getName()).log(Level.SEVERE, null, ex);
    }
    return permissaoExistente;

}

–Agora no FramePrincipal criei o metodo abaixo que compara as permissoes cadastradas no Banco de Dados com a Descrição do Menu:

/INICIO Metodo para verificar as permissões do usuário/

public static void setPermissoes() {

    CadastroUsuario usuario = new CadastroUsuario();
    /* Inicio análise permissão MENU SISTEMA-----------------------------------------------------------------------------------------------------------*/
    if (usuario.getPermissoes(getInstancia().jLabelUsuarioLogado.getText().toUpperCase(), getInstancia().MENU_SISTEMA.getText().toUpperCase())) {
        getInstancia().MENU_SISTEMA.setVisible(true);

        //INICIO análise permissão SUB MENU Administracao Sistema
        if (usuario.getPermissoes(getInstancia().jLabelUsuarioLogado.getText().toUpperCase(), getInstancia().jMenuAdmSistema.getText().toUpperCase())) {
            getInstancia().jMenuAdmSistema.setEnabled(true);

        } else {
            getInstancia().jMenuAdmSistema.setEnabled(false);
        }
        //FIM
    } else {
        getInstancia().MENU_SISTEMA.setVisible(false);
    }

}
/* Fim análise permissão MENU SISTEMA---------------------------------------------------------------------------------------------*/

–Para os demais Menus e Sub Menus basta seguir as mesmas lógica,
–Se alguém tiver uma idéia de como melhorar isso , por favor fiquem avontade, estou apenas começando no java e estou contribuindo com o que sei no momento.
– A vantagem que encontrei nesse modo é que o usuário visualizará apenas os menus cadastrados, e será habilitado apenas os sub menus cadastrados para o mesmo.

–Ressalto, sou iniciante no java, se alguém tiver sugestões quanto a melhorias no código, será ótimo.