Red de conocimiento informático - Material del sitio web - Responda preguntas sobre el uso de interfaces DAO al desarrollar capas Java WEB DAO

Responda preguntas sobre el uso de interfaces DAO al desarrollar capas Java WEB DAO

La existencia de la interfaz sirve para proteger las diferencias en las implementaciones JDBC de diferentes bases de datos.

Tome como ejemplo una estructura organizativa de sistema común. Hay una tabla de departamentos que se utiliza para almacenar información del departamento en el sistema de gestión. Debido a que puede haber subdepartamentos bajo el departamento, los campos de la tabla deben ser. definido de manera similar a la estructura de árbol (parentId, etc.). En este momento, si queremos usar SQL en Java para consultar los datos del departamento especificado, debemos considerar las declaraciones SQL de diferentes bases de datos: Oracle SQL proporciona un método de consulta de árbol. Solo necesita enviar un SQL para consultar todos los sub. -Departamentos bajo la información del departamento; pero MySQL no puede, MySQL solo puede consultar recursivamente uno por uno a través de Java.

Entonces, si nuestro sistema es compatible con Oracle y MySQL, ¿qué debemos hacer para consultar la información del departamento? En este momento tenemos que considerar el problema de la interfaz. Mire el siguiente código:

Primero, defina una interfaz de departamento, que tenga un método findDept para consultar la información del departamento de todos los subdepartamentos

Interface DepartmentDao{

// Consulta la información del departamento de todos los subdepartamentos bajo el ID del departamento principal

public List findDept(int deptId);

}

Con la interfaz, necesitamos tener una implementación de clase. Esta vez necesitamos escribir dos conjuntos de clases de interfaz para considerar la compatibilidad. Una es una clase implementada con declaraciones mysql y la otra es con. Oracle. Clase implementada:

class MySqlDepartmentDaoImpl implement DepartmentDao{

//Consulta todos los departamentos secundarios del departamento según el ID principal del departamento

public List findDept(int deptId). ) {String sql="mysql sql Statement"....}

}

class OracleDepartmentDaoImpl implement DepartmentDao{

//Consulta todos los departamentos secundarios bajo un departamento basado en el ID del departamento principal

public List findDept(int deptId){String sql="Declaración sql de Oracle" .....}

}

Devuelve la instancia de interfaz Dao Factory de DepartmentDao

clase DaoFactory{

public DepartmentDao getDepartmentDao(){

if(usando una base de datos Mysql) {

devolver nuevo MySqlDepartmentDaoImpl ();

}else{

devolver nuevo OracleDepartmentDaoImpl ();

}

}<; / p>

}

}

El DaoFactory codificado arriba es la clave. Solo nuestras instancias de interfaz se devuelven a través de esta fábrica, protegiendo así las diferencias entre diferentes bases de datos (si es el caso). usuario Si se utiliza la base de datos mysql, se devolverá el nuevo MySqlDepartmentDaoImpl () y viceversa, se devolverá el nuevo OracleDepartmentDaoImpl (). Solo necesitamos consultar los datos requeridos en la codificación a través de DepartmentDao deptDao = DaoFactory.getDepartmentDao();

Por lo tanto, la programación orientada a interfaces es muy importante. Se recomienda que aprenda el IOC de Spring. Si escribe más código, comprenderá la importancia de las interfaces.

.