César Francisco Castillo - Desarrollo de aplicaciones web con Jakarta EE

Здесь есть возможность читать онлайн «César Francisco Castillo - Desarrollo de aplicaciones web con Jakarta EE» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: unrecognised, на испанском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Desarrollo de aplicaciones web con Jakarta EE: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Desarrollo de aplicaciones web con Jakarta EE»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

¿Desea desarrollar aplicaciones innovadoras y adaptadas a las necesidades del mercado mundial?
Las aplicaciones empresariales constituyen el pilar fundamental del desarrollo de aplicaciones en la actualidad. Jakarta EE ofrece un conjunto de tecnologías listas para ser usadas con mucha facilidad, al permitir construir no solo aplicaciones robustas, escalables y fácilmente mantenibles, tal como lo exige la industria hoy en día, sino también pequeñas aplicaciones sin necesidad de grandes cambios.
Desarrollo de aplicaciones web con Jakarta EE le brinda el conocimiento y las herramientas necesarias para que pueda:
Construir proyectos web profesionales, integrando las especificaciones JPA, EJB, CDI y JSF
Gestionar grandes volúmenes de datos mediante carga diferida
Automatizar el envío de correos electrónicos
Diseñar e integrar reportes en aplicaciones
Construir y documentar APIs RESTful
Montar entornos de integración y despliegue continuo con Jenkins
Por muchísimo menos de lo que vale un curso completo de estas características, aprenderá a construir aplicaciones empresariales del mundo real, empleando las mejores técnicas e integrando diversas tecnologías, como solo los profesionales saben hacerlo. Con la adquisición de este libro, asentará las bases de su futuro como desarrollador Jakarta EE.

Desarrollo de aplicaciones web con Jakarta EE — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Desarrollo de aplicaciones web con Jakarta EE», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

JPA nos permite crear consultas según nuestras necesidades y agregarlas a dicho conjunto, con lo que se evita así la repetición. Por ejemplo, podemos crear una consulta que se llame buscarPorIdFacultad y que retorne el listado de todas las carreras de una determinada facultad.

Para ello, lo primero que haremos será definirla mediante la anotación correspondiente y, luego, agregarla al conjunto:

@NamedQuery(name = “buscarPorIdFacultad”, query = “SELECT c FROM Carrera c WHERE c.idFacultad.idFacultad = ?1)

Una vez hayamos definido la consulta basada en nombre, la debemos crear mediante JPA utilizando el método createNamedQuery() del EntityManager, como se observa en el siguiente fragmento de código:

264 Consultas dinámicas y sus problemas Generalmente cuando trabajamos con - фото 27 264 Consultas dinámicas y sus problemas Generalmente cuando trabajamos con - фото 28

2.6.4 Consultas dinámicas y sus problemas

Generalmente, cuando trabajamos con consultas, sabemos cómo debemos construirlas para obtener los resultados deseados. No obstante, en otras situaciones no podremos saber o anticipar de qué manera deben ser construidas. Estas situaciones se presentan debido a que el usuario puede especificar un número variable de parámetros a la hora de trabajar en la aplicación. En ese caso, poder construir una cadena en tiempo de ejecución en función de los parámetros especificados por el usuario y convertirla luego en una consulta es una característica más que interesante. Estas consultas reciben el nombre de “consultas dinámicas”, ya que son definidas en tiempo de ejecución mediante la construcción de una cadena en partes, como se puede apreciar en la Figura 2.6 .

Figura 26 Construcción de consultas dinámicas Nota Gráfico adaptado de - фото 29

Figura 2.6 Construcción de consultas dinámicas.

Nota: Gráfico adaptado de https://www.arquitecturajava.com/

Sin embargo, el precio que hay que pagar por esta característica es muy elevado en términos de rendimiento, ya que todas estas construcciones deben ser analizadas y luego traducidas a su correspondiente versión en SQL.

Observe el método buscarPorNombre(), que retorna un listado de facultades de acuerdo a su nombre y abreviatura. Aquí podemos ver que la cadena consulta se construye a partir de la concatenación de fragmentos de cadenas y nombres de parámetros. Esto tiene el problema de que por cada invocación la cadena será construida nuevamente.

Por otra parte, este código es frágil y propenso a las inyecciones SQL debido a que la consulta no está siendo parametrizada correctamente.

Probemos su funcionamiento ejecutándola desde el método main con dos - фото 30 Probemos su funcionamiento ejecutándola desde el método main con dos - фото 31

Probemos su funcionamiento ejecutándola desde el método main() con dos argumentos válidos:

Con estos valores como argumentos la consulta generada tendría el siguiente - фото 32 Con estos valores como argumentos la consulta generada tendría el siguiente - фото 33

Con estos valores como argumentos, la consulta generada tendría el siguiente aspecto:

SELECT idfacultad, abreviatura, nombre FROM Facultad WHERE ((nombre = ?) AND (abreviatura = ?))

y su resultado se observa en la Figura 2.7

Figura 27 Ejecución normal de consulta Ahora bien si reemplazamos el valor - фото 34

Figura 2.7 Ejecución normal de consulta.

Ahora bien, si reemplazamos el valor del parámetro abreviatura por una cadena similar a “ ‘ or ‘ ’=’ ”, obtendremos una consulta con una condición que siempre será evaluada como verdadera, tal como se puede apreciar en el siguiente fragmento de código:

servicio .buscarPorNombre (“Facultad de Ciencias Exactas y Tecnologías” ,“ ‘ or ‘ ‘=’ “ );

Así, la nueva consulta que se genera tendría el siguiente aspecto:

SELECT idfacultad, abreviatura, nombre FROM Facultad WHERE (((nombre = ?) AND (abreviatura = ?)) OR (? = ?))

Como resultado, obtendremos el listado completo de las Facultades debido a una inyección SQL.

Figura 28 Salida luego de una inyección SQL Para solucionar este problema - фото 35

Figura 2.8 Salida luego de una inyección SQL.

Para solucionar este problema, debemos recurrir, en primera instancia, a las consultas parametrizadas. Para ello modificaremos el método buscarPorNombre(), como se puede apreciar a continuación:

Probemos de nuevo la ejecución del método main tanto con ar - фото 36 Probemos de nuevo la ejecución del método main tanto con argumentos válidos - фото 37 Probemos de nuevo la ejecución del método main tanto con argumentos válidos - фото 38

Probemos de nuevo la ejecución del método main(), tanto con argumentos válidos como con no válidos, y veremos que la consulta que obtenemos siempre es la misma.

SELECT idfacultad, abreviatura, nombre FROM Facultad WHERE ((nombre = ?) AND (abreviatura = ?))

Este ha sido un pequeño ejemplo construido intencionalmente para que el lector pueda ver lo peligroso que resulta construir consultas dinámicas mediante concatenación.

En las próximas secciones estudiaremos Criteria API, que nos permite resolver casos como este y muchos otros de mejor manera.

2.7 Operaciones del administrador de entidades

En la sección 2.2.2 hacíamos referencia a las operaciones que el Entity Manager administraba, pero no a su implementación. En esta sección trabajaremos con la entidad Facultad y desarrollaremos los métodos para insertar, modificar y eliminar.

Antes de comenzar a implementar los métodos que dan soporte a las operaciones de tipo C.R.U.D., es necesario crear el EntityManagerFactory , como se observa en la siguiente línea de código:

EntityManagerFactory emf =Persistence .createEntityManagerFactory (“capituloJPA” );

Observe que el método createEntityManagerFactory() recibe como parámetro el nombre de la unidad de persistencia que creamos en la sección 2.2.1 y retorna el EntityManagerFactory , que será asignado a la variable emf . Mediante la variable emf invocamos el método createEntityManager(), que retornará un EntityManager

EntityManager em =emf .createEntityManager ();

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Desarrollo de aplicaciones web con Jakarta EE»

Представляем Вашему вниманию похожие книги на «Desarrollo de aplicaciones web con Jakarta EE» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Desarrollo de aplicaciones web con Jakarta EE»

Обсуждение, отзывы о книге «Desarrollo de aplicaciones web con Jakarta EE» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x