MVC -ACCESO DATOS MYSQL

ante todo buenos dias .. mi duda es la siguiente tal vez sea un poco trivial ..en la clase autorDAO en la funcion public boolean grabar(Object object) porque el ingeniero iguala oAutor = (Autor)object ...... a mi me habian comentado que oAutor es una referencia y no el objeto mismo ..esa es la duda que tengo unos compañeros me dicen que oAutor es una referencia y otros me dicen que es el objeto mismo ...me podrian ayudar a despejar mi duda ....( nunca me explicaron com funciona el codigo asi que estoy tratando de entenderlo por mi cuenta)
sorry por la molestia ... gracias ante todo
muy buenos dias
posdata : soy nuevo en java ; la clase nacionalidad si la tengo implementada en java y no crei necesaria escribir el codigo

Autor.java

package modelo.bean;

/**
 *
 * @author Alumno
 */

public class Autor {

    private int autorID;
    private String nombre;
    private String apellido;
    private Nacionalidad nacionalidad;

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public int getAutorID() {
        return autorID;
    }

    public void setAutorID(int autorID) {
        this.autorID = autorID;
    }

    public Nacionalidad getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(Nacionalidad nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}

AUTORDAO.java

package modelo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import modelo.bean.Autor;

/**
 *
 * @author Alumno
 */

public class AutorDAO {
        private Connection conn;
        private PreparedStatement pst;
        private Autor oAutor;

        public AutorDAO(Connection conn){
            this.conn = conn;
        }

        public boolean grabar(Object object)throws SQLException{
           oAutor = (Autor)object;
           try{
            String sql = "INSERT INTO AUTORES(NOMBRE, APELLIDOS, IDNACION) VALUES(?,?,?)";
            pst = conn.prepareStatement(sql);
            pst.setString(1, oAutor.getNombre());
            pst.setString(2,oAutor.getApellido());
            pst.setInt(3,oAutor.getNacionalidad().getNacionID());
            pst.executeUpdate();
            return true;
           }catch(SQLException e){
                throw e;
           }
        }

        public boolean modificar(Object object)throws SQLException{
            oAutor = (Autor)object;
            try{
                String sql="UPDATE AUTORES SET NOMBRE=?, APELLIDOS=? IDNACION=? WHERE IDAUTOR = ?";
                pst = conn.prepareStatement(sql);
                pst.setString(1, oAutor.getNombre());
                pst.setString(2, oAutor.getApellido());
                pst.setInt(3, oAutor.getNacionalidad().getNacionID());
                pst.setInt(4, oAutor.getAutorID());
                pst.executeUpdate();
                return true;
            }catch(SQLException e){
                throw e;
            }

        }

        public boolean eliminar(Object object)throws SQLException{
            oAutor = (Autor)object;
            try{
                String sql = "DELETE FROM AUTORES WHERE IDAUTOR = ?";
                pst = conn.prepareStatement(sql);
                pst.setInt(1,oAutor.getAutorID());
                pst.executeUpdate();
                return true;
            }catch(SQLException e){
                throw e;
            }
        }
}

AutorLogic.java

package modelo.logic;

import java.sql.Connection;
import modelo.bean.Autor;
import modelo.dao.AutorDAO;
import modelo.dao.Conexion;

/**
 *
 * @author Alumno
 */

public class AutorLogic {

    public static boolean grabarAutor(Autor oAutor)throws Exception{

        Connection conn = null;

        try{
            //Obtener la conexion
            conn = Conexion.getConexion();
            //Iniciar la transaccion
            conn.setAutoCommit(false);
            //Implementar reglas de negocio
            AutorDAO autorDao = new AutorDAO(conn);
            autorDao.grabar(oAutor);
            //Finalizar la transaccion
            conn.commit();
            return true;
        }catch(Exception e){
            e.printStackTrace();
            conn.rollback();
            throw e;
        }finally{
            if(conn!=null){
                conn.close();
            }
        }
    }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

MVC -ACCESO DATOS MYSQL

hola hoy en dia para el desarrollo MVC en java te recomendaria que uses Spring con hibernate, spring seria el framework que te ayudara a crear tu aplicacion mvc y hibernate es el mapeo de objetos relacional esta ayudara que no tengas que lanzar mucho codigo a la hora de guardar o mejor dicho tocar la base de datos hibernate se encargara de eso, lee un poco sobre hibernate ya que es mas recomendable asi entenderas la forma correcta sobre el uso mcv en java.

http://www.springsource.org/
http://www.hibernate.org/

leelo con calma bajate algunos ejemplos , recuerda la idea de hibernate es que no tengas que crear query ni el dao , aunque en unos casos en necesario va mas orientado a NO-SQL.

Imagen de beto.bateria

Referencia

Explicando esta parte:

         Autor autor = new Autor();

En:

    Autor autor

Estas indicando que vas a crear en memoria ram una variable que va a contener un numero.
Este numero indica una direccion de memoria.
Esta direccion de memoria contiene un objeto tipo Autor.
En C (el lenguaje) este concepto se conoce como apuntador.

        new Autor();

Estas indicando que se tome la clase Autor.
Se cree un objeto de esta clase.
Se asigna a alguna parte de la memoria.

         Autor autor = new Autor();

El compilador obtiene la direccion de la memoria del objeto Autor y se lo asigna a autor.
Por lo tanto, autor es un valor por referencia del nuevo objeto.

En:

        public boolean grabar(Object object)throws SQLException{
           oAutor = (Autor)object;
       }
       grabar(Object object)

Estas pasando una direccion(un numero) de un objeto por valor.
Esta direccion, es una referencia que se pasa por valor al metodo.

           oAutor = (Autor)object;

Estas diciendo que esa direccion(object) es tipo Autor, y se la estas asignando a un apuntador(oAutor) que es tipo Autor.

http://es.wikipedia.org/wiki/Referencia
http://jpangamarca.wordpress.com/cafe-java/en-java-el-paso-de-parametros...

Imagen de marcosaw

Efectivamente oAutor es una

Efectivamente oAutor es una referencia de tipo Autor (clase Autor). En el método grabar tienes una referencia object de tipo Object (clase Object) en la signatura del método "grabar(Object object)". Lo que quiero decir es que el argumento object (con minúscula) tampoco es un objeto en sí, sino la referencia a un objeto que reside en memoria y el cual será provisto en el momento que se invoque el método.

Ahora, lo que estás haciendo en la expresión oAutor = (oAutor) object; es hacer un cast (una especie de conversión de tipos) entre el tipo Object de la referencia object, al tipo Autor de la referencia oAutor.

En resumen, todas las referencias que utilizas en tu código, no son los objetos en sí; son nombres para hacer referencia a algún objeto que reside en memoria.