Codigo simples tentando implementar MVC, alguem ajuda?

Bom dia pessoal !

Após muitas dicas de vários colegas daqui cheguei ao código abaixo, no entanto não sei dizer se ele atende ao modelo MVC, sendo assim gostaria de pedir que vocês o analisassem e me indicassem o que devo mudar.

Vou tentar reproduzir a forma como acabei implementando e se voces puderem analisar e apontar onde estão os erros na abordagem vou ficar muito agradecido.

Primeiro a minha Interface com o usuario, suponho que seria minha View:

 package app;
 
 import java.util.List;
 
 public class CadastroUsuario_2 extends javax.swing.JFrame {
     private Usuario user;
     //private List <Usuario> userLista;
     private UsuarioModel userModel = new UsuarioModel();
     
     /** Creates new form CadastroUsuario */
     public CadastroUsuario_2() {
         initComponents();
         user = userModel.atual();
         MostraDados(user);
     }
     
     private void MostraDados(Usuario u) {
         txtus_usID.setText(String.valueOf(u.getUsusId()));
         txtus_usLogin.setText(u.getUsusLogin());
         txtus_usNome.setText(u.getUsusNome());
         txtus_pePerfil.setText(u.getUspePerfil());
     }
 
     private void btAnteriorActionPerformed(java.awt.event.ActionEvent evt) {                                           
         user = userModel.anterior();
         MostraDados(user);
     }                                          
 
     private void btProximoActionPerformed(java.awt.event.ActionEvent evt) {                                          
         user = userModel.proximo();
         MostraDados(user);
     }                                         
 
   public static void main(String args[]) {
         java.awt.EventQueue.invokeLater(new Runnable() {
             public void run() {
                 new CadastroUsuario_2().setVisible(true);
             }
         });
     }
     
      
 }

Agora a minha classe Usuario (não sei como classifica-la, acredito que faça parte da camada Model):

 package app;
 
 @Entity
 @Table(name = "usuario")
 @NamedQueries( {
         @NamedQuery(name = "Usuario.findByUsusId", query = "SELECT u FROM Usuario u WHERE u.ususId = :ususId"),
         @NamedQuery(name = "Usuario.findByUsusLogin", query = "SELECT u FROM Usuario u WHERE u.ususLogin = :ususLogin"),
         @NamedQuery(name = "Usuario.findByUsusPassoword", query = "SELECT u FROM Usuario u WHERE u.ususPassoword = :ususPassoword"),
         @NamedQuery(name = "Usuario.findByUsusNome", query = "SELECT u FROM Usuario u WHERE u.ususNome = :ususNome"),
         @NamedQuery(name = "Usuario.findByUspePerfil", query = "SELECT u FROM Usuario u WHERE u.uspePerfil = :uspePerfil")
     })
     
 public class Usuario implements Serializable {
 
     @Id
     @Column(name = "us_usId", nullable = false)
     private Integer ususId;
 
     @Column(name = "us_usLogin")
     private String ususLogin;
 
     @Column(name = "us_usPassoword")
     private String ususPassoword;
 
     @Column(name = "us_usNome")
     private String ususNome;
 
     @Column(name = "us_pePerfil")
     private String uspePerfil;
     
     /** Creates a new instance of Usuario */
     public Usuario() {     
     }
     
     /**
      * Cria uma nova instância de Usuario com os valores especificados.
      * @param ususId o ususId do Usuario
      */
     public Usuario(Integer ususId) {       
         Usuario userTemp = UsuarioDAO.BuscarUsuario(ususId);
         this.ususId = userTemp.getUsusId();
         this.ususLogin = userTemp.getUsusLogin();
         this.ususNome = userTemp.getUsusNome();
         this.uspePerfil = userTemp.getUspePerfil();
         this.ususPassoword = userTemp.getUsusPassoword();        
     }
         
     public Integer getUsusId() {
         return this.ususId;
     }
 
     public void setUsusId(Integer ususId) {
         this.ususId = ususId;
     }
 
     public String getUsusLogin() {
         return this.ususLogin;
     }
 
     public void setUsusLogin(String ususLogin) {
         this.ususLogin = ususLogin;
     }
 
 /* Todos os outros getters e setters estariam aqui
 
     /**
      * Retorna um valor de código hash para o objeto.  Esta implementação computa
      * um valor de código hash baseado nos campos id deste objeto.
      * @return um valor de código hash para este objeto.
      */
     @Override
     public int hashCode() {
         int hash = 0;
         hash += (this.ususId != null ? this.ususId.hashCode() : 0);
         return hash;
     }
 }

Agora a classe que chamei de UsuarioModel, mas agora não sei se ela representa esta camada:

 package app;
 
 import java.util.List;
 import javax.swing.JOptionPane;
 
 public class UsuarioModel {
     private Usuario userAtual;
     private List <Usuario> listaUser = null;
     
     
     /** Creates a new instance of UsuarioModel */
     public UsuarioModel() {
         listaUser = UsuarioDAO.BuscarListaUsuario();        
         userAtual = listaUser.get(0);
     }
     
     public Usuario proximo() {    
         
         if (listaUser.indexOf(userAtual) <  listaUser.size() - 1)
             userAtual = listaUser.get(listaUser.indexOf(userAtual)+1);  
         else
             JOptionPane.showMessageDialog(null, "Ultimo");
             
         return userAtual;
     }
     
     public Usuario anterior() {    
         if (listaUser.indexOf(userAtual) >  0)
             userAtual = listaUser.get(listaUser.indexOf(userAtual)-1);        
         return userAtual;
     }
     
     public Usuario atual() {    
         return userAtual;
     }    
 }

E por fim uma classe responsável pela conexão com o banco, é nessa classe que eu pretendo colocar os métodos de persistencia, insert, update e delete, alem do select que já coloquei:

 package app;
 
 public class UsuarioDAO {
     private static Connection conn = null;
     private static Statement st;
     private static ResultSet rs;    
 
     /** Creates a new instance of UsuarioDAO */
     public UsuarioDAO() {
     }
     
     private static void Conecta(){
         try {
             conn = ConnectionFactory.getConnection();        
         } catch (SQLException ex) {
             ex.printStackTrace();
         }        
     }
    
     public static List <Usuario> BuscarListaUsuario() {
         Usuario userTemp; 
         List <Usuario> listaUserTemp = new ArrayList <Usuario> ();
                 
         try {            
             Conecta();
             st = conn.createStatement();
             rs = st.executeQuery("Select * from Usuario");
             while (rs.next()) {     
                 userTemp = new Usuario();
                 userTemp.setUsusId(rs.getInt("us_usID"));
                 userTemp.setUsusNome(rs.getString("us_usNome"));
                 userTemp.setUsusLogin(rs.getString("us_usLogin"));
                 userTemp.setUsusPassoword(rs.getString("us_usPassoword"));
                 userTemp.setUspePerfil(rs.getString
                 ("us_pePerfil"));                                    
                 listaUserTemp.add(userTemp);
             }
         } catch (SQLException ex) {
             ex.printStackTrace();
         }
         return listaUserTemp;
     }            
 }

Para tentar diminuir cortei algumas coisas, por exemplo os métodos criados pelo NetBeans 5.5, como o initComponents(), imports e declaração de JTextFiels e JLabels, mas no meu código esta completo e aparentemente funcionando.

Bom se alguém tiver boa vontade e paciência para analisar meus códigos e me orientar, vou ficar realmente muito grato. De coração.

Um abraço a todos.