Excelente pregunta
Ambos están relacionados con mecanismos de persistencia. Esa es la única similitud.
En el gran tema de las cosas en Java, hay una pila de software para acceder a los datos en las bases de datos.
- ¿Cuáles son los nuevos temas de investigación sobre gestión de calidad de software?
- ¿Los consultores logran ganar una compensación más alta que los ingenieros de software regulares con el mismo nivel de experiencia?
- Si he construido un modelo predictivo en R, ¿cómo transformarlo / construirlo en una interfaz de software donde los clientes puedan realizar análisis simplemente haciendo clic en los botones?
- ¿Cuál es la mejor manera de construir un portal para desarrolladores?
- ¿Cómo gestionan las empresas de desarrollo de software las empresas o la documentación de un gran proyecto editada por varias personas? ¿Es con Git?
Primero, hay controladores escritos por proveedores de motores de bases de datos, para acceder desde diferentes idiomas. Esto no debería ser necesario porque SQL es un estándar, pero todos los proveedores de motores de bases de datos implementan solo el 98% del estándar y agregan algunas sugerencias especiales que solo ellos tienen … así que si usas ese azúcar especial, obtienen el bloqueo del proveedor y ganan dinero , porque no puede cambiar fácilmente de proveedor.
Los controladores en Java están escritos de acuerdo con la especificación JDBC. La especificación JDBC refleja la especificación ODBC, que era el estándar de facto antes de que se creara Java.
JDBC es realmente inteligente. Cuenta con 4 niveles. El primer nivel es cuando JDBC llama a ODBC. ODBC era especial porque permitía que cualquier idioma usara el mismo controlador … Antes de instalar ODBC para instalar los controladores a medida que instalaba Word o Excel, ejecute un programa que requiere mucho tiempo y que incluso requería arrancar la computadora.
Entonces, el nivel 1 de JDBC fue muy bueno. La especificación mencionó 4 niveles, el nivel 4 era un controlador escrito en Java puro. Solo un archivo jar. La sorpresa fue que el nivel 4 fue mucho más rápido que los otros 3 niveles. Entonces la gente usa el nivel 4 exclusivamente hoy en día.
Ok, todavía no he respondido nada en tu pregunta.
Resulta que los programadores pueden escribir grupos. Un grupo es simplemente una matriz de objetos. Tiene una API para obtener y objetar y liberar el objeto.
Algo como:
clase MyPool {
matriz de objetos privados [];
Objeto público adquirir () {…}
lanzamiento público (Objeto ob) {…}
}
La idea es que crear conexiones a la base de datos es costoso, por lo que puede crear 10 conexiones y mantenerlas vivas durante la aplicación. Esto no tiene sentido en el código del cliente, pero tiene mucho sentido en el código del servidor. Y Java se usa principalmente en el código del servidor.
Finalmente, el controlador JDBC mismo administró el grupo de conexiones sin que tenga que darse cuenta de ello. Cuando abre una conexión, simplemente le proporciona una de las conexiones gratuitas y creadas actualmente. Y cuando cierra la conexión, simplemente la vuelve a colocar en el grupo. ¡Excelente! ¿No es así?
Ok, eventualmente la gente comenzó a usar el estándar J2EE además de todo eso. Tenía grupos de conexión definidos en el servidor de aplicaciones. Y además de eso, podría enviar SQL a través de esas conexiones. J2EE definió algunos Java Beans Enterprise (EJB) que permitieron acceder a la base de datos: EJB de entidad. Fue un desastre. Incómodo de crear. Es engorroso trabajar con él.
Finalmente, la gente comenzó a usar Hibernate como un reemplazo para los EJB de Entity. Hibernate tenía todo lo que proporcionaban los EJB de la entidad y más. Hibernate se basó en el patrón DAO.
El patrón DAO se basa en la idea de que los objetos persistentes necesitan saber cómo persistir. Básicamente, para cada objeto X persistente, debe crear un XDAO que sepa exactamente cómo persistir el objeto. En Hibernate, incluso escribe el SQL por ti.
Y si no sabe cómo crear el DAO para un objeto, Hibernate tiene herramientas para crear esos DAO por usted.