Este documento describe el uso de objetos relacionales mapeados (ORM) en Hibernate. Explica las ventajas de usar un ORM como Hibernate, como simplifica el trabajo con bases de datos relacionales al permitir el uso de objetos en lugar de filas y tablas. También describe los componentes clave de Hibernate como las clases de mapeo, la configuración y la API para realizar operaciones CRUD.
En la red encontraremos mucha documentación de servidores DNS con IPv4; este tutorial se enfoca en mostrar la configuración de un servidor DNS en Linux usando IPv6.
2018년 10월 19일 금요일, 오픈스택 한국 커뮤니티 정기 세미나에서 발표주셨던 자료입니다.
- 행사 정보: http://festa.io/events/118
- 발표자: 김용기 부장님
> Sr. Solution Architect, Red Hat
> Administrator, Ansible Facebook Usergroup
En la red encontraremos mucha documentación de servidores DNS con IPv4; este tutorial se enfoca en mostrar la configuración de un servidor DNS en Linux usando IPv6.
2018년 10월 19일 금요일, 오픈스택 한국 커뮤니티 정기 세미나에서 발표주셨던 자료입니다.
- 행사 정보: http://festa.io/events/118
- 발표자: 김용기 부장님
> Sr. Solution Architect, Red Hat
> Administrator, Ansible Facebook Usergroup
“Progressive Web Apps (PWAs) are web applications that load like regular web pages or websites but can offer the user functionality such as working offline, push notifications, and device hardware access traditionally available only to native mobile applications. PWAs are an emerging technology that combine the open standards of the web offered by modern browsers to provide benefits of a rich mobile experience”
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
리눅스 pacemaker 기반의 High Availaiblity 구성방법에 대해 설명합니다. pacemaker를 사용하는 다른 리눅스 기반도 구성이 가능합니다.
Pacemaker 기반 Linux High Availability 입문용으로는 적합하지 않을 수 있습니다. Pacemaker 기반 Linux High Availability를 한 번도 설치 및 구성을 하지 않은 리눅스 관리자라면 설치 문서를 먼저 참고하십시오.
RHEL7 및 CentOS 7을 중심으로 레드햇 계열의 리눅스에 적합한 내용으로 작성되었습니다.
NodeJS is an open source, cross platform run time environment for server side and networking application. NodeJS is popular in development because front & back end side both uses JavaScript Code.
CommitConf 2023 - Spring Framework 6 y Spring Boot 3Iván López Martín
Spring Framework 6 es la base de la nueva generación del ecosistema Spring con la mirada puesta en 2023 y más allá. Spring Framework 6 requiere Java 17 e introduce soporte de primer nivel de Ahead of Time (AoT) e imágenes nativas de GraalVM.
Por otro lado Spring Boot 3 es la nueva versión del framework que se aprovecha de todas las ventajas y novedades de Spring 6 para hacer más fácil y sencillo desarrollar nuestras aplicaciones Java.
En esta charla veremos las principales novedades tanto de Spring Framework 6 como Spring Boot 3 como el nuevo cliente HTTP pero nos centraremos sobre todo en el uso de AOT y GraalVM. ¡Además tendremos la posibilidad de verlo en acción!
A straight-forward explanation with an example of how JSR-88 aka Deployment Plans can be used in WebLogic Server to make changes to values in deployment descriptors without modifying application archives.
RabbitMQ/ActiveMQ 와 같은 비동기 메시징 미들웨어를 이용하여 다량의 서버를 orchestration(command & control) 할 수 있는 mcollective에 대한 한글 ppt 자료입니다. 상세한 내용은 http://wiki.tunelinux.pe.kr/x/LQAy 를 참고하시면 됩니다.
Title: Ansible, best practices.
Ansible has taken a prominent place in the configmanagement world. By now many people involved in DevOps have taken a look at it, or done a first project with it. Now it is time to step back and look at quality and craftmanship. Bas Meijer, Ansible ambassador, will talk about Ansible best practices, and will show tips, tricks and examples based on several projects.
About the speaker
Bas is a systems engineer and software developer and wasted decades on latenight hacking. He is currently helping out 2 enterprises with continuous delivery and devops.
Java DataBase Connectivity API (JDBC API)Luzan Baral
JDBC is a Java-based data access technology (Java Standard Edition platform) from Oracle Corporation. This technology is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database. JDBC is oriented towards relational databases. A JDBC-to-ODBC bridge enables connections to any ODBC-accessible data source in the JVM host environment.
급증하는 온라인 사용자 증가, 부하테스트가 필요하지 않으신가요?
요즘 인터넷 뉴스에는 홈페이지 접속자 폭증으로 인한 서버 다운, xx은행 모바일 앱 접속 에러, 인터넷 뱅킹 장애 등 온라인 시장과 모바일 시장이 급격하게 성장함에 따라 이에 따른 장애 소식이 끊이지 않고 전해지고 있습니다.
그렇다면, 우리는 이런 장애들을 어떻게 대비할 수 있을까요?
웹∙앱 부하테스트 (성능 진단) 및 컨설팅 안은 웹∙앱 부하테스트(성능 진단 테스트) 진행 과정과 이를 기반으로 어떻게 컨설팅을 진행하고 있는지 소개하고, 나아가 관련 장애들을 대비할 수 있는 방법에 대해 설명합니다.
(공유드리는 파일은 slideshare에 업로드되었던 웹∙앱 부하테스트 성능 진단 및 컨설팅 안을 업데이트한 최신 본입니다.)
웹∙앱 부하테스트 (성능 진단) 및 컨설팅 자료는 아래와 같이 구성되어있습니다.
• 웹∙앱 성능을 진단하고 문제에 대한 원인 분석 및 개선방향을 제시합니다.
• 컨설팅 안에는 여러 실 성능 진단을 예시로 들고 이에 대한 원인 분석 및 개선방향을 도
출한 내용이 포함되어 있습니다.
1. 앱 성능 진단
• 앱 진단 절차
• 앱 진단 상세 내용
2. 웹 서버 성능 진단
• 웹 진단 절차
• 웹 진단 방향
3. 부하 테스트
• 현 테스트 시나리오 분석
• 테스트 시나리오 보완 방법
• 부하 테스트 진행 방안
• 부하 테스트 전략
• 클라우드 기반 테스트 방안
모바일 성능 모니터링, 웹 서버 성능 진단 및 부하테스트 컨설팅에 관심이 있으신 분은 아래 연락처로 연락해주시면, 전문 컨설턴트가 안내해드리겠습니다.
hhjung@onycom.com l 02-6395-7722
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps.
“Progressive Web Apps (PWAs) are web applications that load like regular web pages or websites but can offer the user functionality such as working offline, push notifications, and device hardware access traditionally available only to native mobile applications. PWAs are an emerging technology that combine the open standards of the web offered by modern browsers to provide benefits of a rich mobile experience”
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
리눅스 pacemaker 기반의 High Availaiblity 구성방법에 대해 설명합니다. pacemaker를 사용하는 다른 리눅스 기반도 구성이 가능합니다.
Pacemaker 기반 Linux High Availability 입문용으로는 적합하지 않을 수 있습니다. Pacemaker 기반 Linux High Availability를 한 번도 설치 및 구성을 하지 않은 리눅스 관리자라면 설치 문서를 먼저 참고하십시오.
RHEL7 및 CentOS 7을 중심으로 레드햇 계열의 리눅스에 적합한 내용으로 작성되었습니다.
NodeJS is an open source, cross platform run time environment for server side and networking application. NodeJS is popular in development because front & back end side both uses JavaScript Code.
CommitConf 2023 - Spring Framework 6 y Spring Boot 3Iván López Martín
Spring Framework 6 es la base de la nueva generación del ecosistema Spring con la mirada puesta en 2023 y más allá. Spring Framework 6 requiere Java 17 e introduce soporte de primer nivel de Ahead of Time (AoT) e imágenes nativas de GraalVM.
Por otro lado Spring Boot 3 es la nueva versión del framework que se aprovecha de todas las ventajas y novedades de Spring 6 para hacer más fácil y sencillo desarrollar nuestras aplicaciones Java.
En esta charla veremos las principales novedades tanto de Spring Framework 6 como Spring Boot 3 como el nuevo cliente HTTP pero nos centraremos sobre todo en el uso de AOT y GraalVM. ¡Además tendremos la posibilidad de verlo en acción!
A straight-forward explanation with an example of how JSR-88 aka Deployment Plans can be used in WebLogic Server to make changes to values in deployment descriptors without modifying application archives.
RabbitMQ/ActiveMQ 와 같은 비동기 메시징 미들웨어를 이용하여 다량의 서버를 orchestration(command & control) 할 수 있는 mcollective에 대한 한글 ppt 자료입니다. 상세한 내용은 http://wiki.tunelinux.pe.kr/x/LQAy 를 참고하시면 됩니다.
Title: Ansible, best practices.
Ansible has taken a prominent place in the configmanagement world. By now many people involved in DevOps have taken a look at it, or done a first project with it. Now it is time to step back and look at quality and craftmanship. Bas Meijer, Ansible ambassador, will talk about Ansible best practices, and will show tips, tricks and examples based on several projects.
About the speaker
Bas is a systems engineer and software developer and wasted decades on latenight hacking. He is currently helping out 2 enterprises with continuous delivery and devops.
Java DataBase Connectivity API (JDBC API)Luzan Baral
JDBC is a Java-based data access technology (Java Standard Edition platform) from Oracle Corporation. This technology is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database. JDBC is oriented towards relational databases. A JDBC-to-ODBC bridge enables connections to any ODBC-accessible data source in the JVM host environment.
급증하는 온라인 사용자 증가, 부하테스트가 필요하지 않으신가요?
요즘 인터넷 뉴스에는 홈페이지 접속자 폭증으로 인한 서버 다운, xx은행 모바일 앱 접속 에러, 인터넷 뱅킹 장애 등 온라인 시장과 모바일 시장이 급격하게 성장함에 따라 이에 따른 장애 소식이 끊이지 않고 전해지고 있습니다.
그렇다면, 우리는 이런 장애들을 어떻게 대비할 수 있을까요?
웹∙앱 부하테스트 (성능 진단) 및 컨설팅 안은 웹∙앱 부하테스트(성능 진단 테스트) 진행 과정과 이를 기반으로 어떻게 컨설팅을 진행하고 있는지 소개하고, 나아가 관련 장애들을 대비할 수 있는 방법에 대해 설명합니다.
(공유드리는 파일은 slideshare에 업로드되었던 웹∙앱 부하테스트 성능 진단 및 컨설팅 안을 업데이트한 최신 본입니다.)
웹∙앱 부하테스트 (성능 진단) 및 컨설팅 자료는 아래와 같이 구성되어있습니다.
• 웹∙앱 성능을 진단하고 문제에 대한 원인 분석 및 개선방향을 제시합니다.
• 컨설팅 안에는 여러 실 성능 진단을 예시로 들고 이에 대한 원인 분석 및 개선방향을 도
출한 내용이 포함되어 있습니다.
1. 앱 성능 진단
• 앱 진단 절차
• 앱 진단 상세 내용
2. 웹 서버 성능 진단
• 웹 진단 절차
• 웹 진단 방향
3. 부하 테스트
• 현 테스트 시나리오 분석
• 테스트 시나리오 보완 방법
• 부하 테스트 진행 방안
• 부하 테스트 전략
• 클라우드 기반 테스트 방안
모바일 성능 모니터링, 웹 서버 성능 진단 및 부하테스트 컨설팅에 관심이 있으신 분은 아래 연락처로 연락해주시면, 전문 컨설턴트가 안내해드리겠습니다.
hhjung@onycom.com l 02-6395-7722
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps.
La persistencia de objetos permite resolver los problemas de mapeo entre objetos de programación y registros de Base de Datos. Hibernate es uno de los Frameworks más utilizados y por ello lo desmigo en esta presentación.
All developers understand the theoretical value of unit testing, but with data driven applications, figuring out how to create tests can be hard. In this session, you will learn how to design and build a data layer that can be tested. We will introduce data layer architecture practices and methodologies that make testing possible, and cover the basics of unit test mocking. You will also be guided through various types of testing, including unit, integration, and functional testing. Leave this session with the basics needed to start creating tests for application data layers, including those powered by LinqToSQL and Entity Framework.
Descripción del patrón fundamental Delegation, que hace parte de los patrones de diseño.
más en: http://ingeniods.wordpress.com/2013/09/11/delegation-patron-de-diseno/
List of Jargons used in Java EE is Endless - JPA, JDBC, ORM, JNDI, EJB, JTA, DTO, VO, JAXB, JAX-RS, JAX-WS, AOP, Dependency Injection, Model 1 Architecture, Model 2 Architecture, Front Controller, Composite View, Intercepting Filter, Facade, Service Locator to name a few.
For a beginner, Java EE can be overwhelming. Objective of the course is to give a Big Picture of the Java EE. You will understand the Jargon, Specifications, Patterns used in Java EE. You will understand the basic architecture of a Java EE Application.
You will understand the evolution of Java EE Application Architecture:
Model 1 Architecture
Model 2 or MVC Architecture
Modified MVC Architecture using Front Controller
You will get an overview of Patterns used in the Java EE World - Grouped by the layer they are used in:
Front Controller
View Helper
Composite View
Context Object
Intercepting Filter
Domain Model
Facade
DTO/VO
DAO - Data Access Object
Service Activator
You will also be introduced to terminologies like JPA, JDBC, ORM, JNDI, EJB, JTA, DTO, VO, JAXB, JAX-RS, JAX-WS, AOP and Dependency Injection.
Get ready for a Roller Coaster Ride with Java EE.
Introducción a Doctrine 2 ORM.
Una introducción y uso básico de Doctrine 2 ORM en PHP sin utilizar frameworks, a través de un proyecto sencillo usado como ejemplo.
El codigo PHP del proyecto se puede descargar de su repositorio de Github: (https://github.com/gonfert/cine.git)
Presentación realizada para la X Symfony Zaragoza
En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín algorithmus y este del griego arithmos, que significa «número», quizá también con influencia del nombre del matemático persa Al-Juarismi)1 es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades.2 Dado un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
Jquery para principianes
JQUERY
AJAX ENVIAR FORMULARIOS SIN RECARGAR
ACTUALIZAR UN ELEMENTO SIN RECARGAR
COMBOS DEPENDIENTES AJAX BASE DE DATOS
STAR RATING JQUERY SIN BASE DE DATOS
STAR RATING JQUERY PLUGIN
DROPDOWN MENU DESPLEGABLE
ENVIA CORREOS SIN RECARGAR
PANEL DE IMAGENES CAROUSEL
INTERCAMBIO DE ELEMENTOS ENTRE 2 LISTAS
RECARGAR TEXTO AUTOMATICAMENTE
AGREGAR GRAFICOS ESTADISTICOS PIE
VALIDAR FORMULARIOS
INCLUIR TOOLTIP EN MAPA DE IMÁGENES
SUBIR MULTIPLES ARCHIVOS
WEB MODULAR PHP
SLIDER CONTENIDO DESTACADO
VENTANA MODAL
AGREGAR BORRAR CAMPOS
MODIFICANDO ATRIBUTOS
JQUERY MUSIC PLAYER
OCULTAR /MOSTRAR SECCIONES DE NUESTRO SITIO
Redes De Computadores
Introducción a las redes de computadores
Breve historia de las comunicaciones
El teléfono
Aparecen los primeros ordenadores
Los módems
Las redes de datos
Las redes de área local
Arquitecturas de protocolos
La digitalización de la red telefónica
La red digital de servicios integrados
La banda ancha
La telefonía móvil
Arquitecturas de protocolos: el modelo OSI
Definición
Los protocolos
Los servicios
Nivel físico
Nivel de enlace
Los siete niveles del modelo OSI
Nivel de red
Nivel de transporte
Niveles de sesión, presentación y aplicación
II Redes de área local
Las redes de área local
Topologías de las LAN
Topología en estrella
Software libre
ANOTACIONES
ã FUOC • XP//
Topología en bus
Topología en anillo
Pseudotopología de las redes inalámbricas
Cableado estructurado
Control de acceso al medio
Paso de testigo
CSMA/CD
IIITCP/IP
Estructura de protocolos en Internet
Protocolos de Internet
Encapsulamiento
El IP (Internet protocol)
Direcciones IP
Máscaras de red
Direcciones de propósito especial
El formato del paquete IP
Fragmentación
Direccionamiento y direccionadores
La tabla de direccionamiento
El ARP (address resolution protocol)
El ICMP (Internet control message protocol)
Mensajes ICMP
El programa ping
El programa traceroute
Mensaje de redireccionamiento
Redes de acceso a Internet
Acceso telefónico: el PPP
Compresión de las cabeceras
MTU
Acceso ADSL
Acceso LAN: el protocolo Ethernet
Formato de la trama Ethernet
Tipos de medios físicos en Ethernet
Direcciones LAN
Redes de computadores
ANOTACIONES
ã FUOC • XP//
Protocolos del nivel de transporte
El UDP (user datagram protocol)
El TCP (transmission control protocol)
El TCP proporciona fiabilidad
Formato del segmento TCP
Establecimiento de la conexión
Terminación de la conexión
Diagrama de estados del TCP
Transferencia de la información
Transmisión de datos interactivos
Transmisión de datos de gran volumen
Control de flujo por ventana deslizante
Temporizadores y retransmisiones
IV Aplicaciones Internet
El modelo cliente/servidor
El modelo peer-to-peer
Servicio de nombres Internet
El sistema de nombres de dominio
Modelo del DNS
Base de datos DNS: los registros de recurso
Protocolo
Mecanismos de transporte
Mensajes
Representación de los registros de recurso
Implementaciones del DNS
Servicios básicos de Internet
Terminal virtual: el protocolo Telnet
Principios básicos del protocolo Telnet
Comandos del protocolo Telnet
Implementaciones del protocolo Telnet
Terminal virtual en GNU/Linux:
el protocolo rlogin
Conceptos básicos del protocolo rlogin
Implementación del protocolo rlogin
Otros servicios
Ejecución remota con autenticación
automática: rsh
Ejecución remota: rexec
Servicios triviales
Software libre
ANOTACIONES
ã FUOC • XP//
Transferencia de ficheros
FTP: protocolo de transferencia de ficheros
El modelo del FTP
Conceptos básicos del FTP
Funcionalidad del FTP
Implementaciones del FTP
Ejemplo de sesión FTP
El TFTP
Conceptos básicos del TFTP
Funcionalidad del TFTP
Implementaciones del TFTP
Correo electrónico Internet
Formato de los mensajes: el RFC
Información de la cabecera
Ejemplo
El SMTP
Modelo del SMTP
Direcciones de correo
Envío de correo y mensajes a terminales
Conceptos básicos del SMTP
Funcionalidad del SMTP
Códigos de respuesta
Extensiones SMTP para mensajes debits
Ejemplo
Acceso simple a los buzones de correo: el POP
Modelo del POP
Conceptos básicos del POP
Funcionalidad del POP
Ejemplo
Acceso complejo a los buzones de correo:
el IMAPrev
Modelo del IMAP
Conceptos básicos del IMAP
Funcionalidad del IMAP
Ejemplo
Extensiones multimedia: el formato MIME
Nuevos campos de cabecera
Extensiones para texto no ASCII
en las cabeceras
Mensajes multiparte
Ejemplo
Servicio de noticias: el NNTP
El modelo NNTP
Conceptos básicos del NNTP
Redes de computadores
ANOTACIONES
ã FUOC • XP//
Formato de los artículos
2. Que es un ORM Es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional. En la práctica esto crea una base de datos orientada a objetos virtual, por sobre la base de datos relacional. Esto posibilita el uso de las características propias de la orientación a objetos (básicamente herencia y polimorfismo). Hay paquetes comerciales y de uso libre disponibles que desarrollan el mapeo relacional de objetos, aunque algunos programadores prefieren crear sus propias herramientas ORM. (Fuente Wikipedia)
22. Que es Hibernate Es una herramienta de Mapeo objeto-relacional para la plataforma Java que facilita el mapeo de atributos entre una base de datos relacional tradicional y el modelo de objetos de una aplicación, mediante archivos declarativos (XML) que permiten establecer estas relaciones. Usa el mecanismo de reflexión de Java, que permite a un objeto en ejecución examinarse y manipularse a sí mismo.
28. Cada clase persistente necesita un fichero XML de mapeo del que obtiene toda la información para realizar las operaciones CRUD
29.
30. Hibernate Vs JDBC ¿Cuál es la gran diferencia entre el código tradicional JDBC y el código que escribimos con Hibernate? “Ha desparecido el SQL”. Lo único que digo es que quiero “guardar” (save) un objeto.
34. Que se necesita Una serie de JavaBeans que son las clases a persistir Un archivo XML por cada una de estas clases (MiClase.hbm.xml) que indica el mapping entre objetos y relaciones Crear/Configurar el archivo del framework hibernate.cfg.xml
35. Configurar JavaBean Este sería el aspecto del JavaBean que representa un Empleado en una supuesta aplicación: packagemx.model; public class Empleado implementsSerializable{ private Long id; privateString nombre; privateString apellido; // SettersGetters …. }
36. Estructura del fichero XML Esquema general de un fichero XML de mapeo es algo como esto: <Encabezado XML> <Declaración de la DTD> <class - Definición de la clase persistente> <id - Identificador> <generator - Clase de apoyo a la generación automática de OID's> <property – propiedades de la clase> <!--***************Asociaciones *************** --> <!--Posibles relaciones con otras entidades persistentes--> <one-to-many > <many-to-many> <many-to-one> 1 2 3 4 5 6
39. table: Nombre de la tabla en la BBDD referenciada. En esta tabla se realizaraá las operaciones de transacciones de datos. Se guardarán, modificarán o borrarán registros según la lógica de negocio de la aplicación.
43. type: Indica el tipo de los datos almacenados.6 Tipos de relaciones.(Componentes y Colecciones) En todo diseño relacional los objetos se referencian unos a otros a través de relaciones, las típicas son : uno a uno 1-1, uno a muchos 1-n, muchos a muchos n-m, muchos a uno n-1. De los cuatro tipos, dos de ellas n-m y 1-n son colecciones de objetos las cuales tendrán su propio y extenso apartado, mientras que a las relaciones 1-1 y n-1 son en realidad componentes de un objeto persistente cuyo tipo es otro objeto persistente.
44. Estructura del archivo de configuración Esquema general de un fichero XML de configuración es algo como esto: <Encabezado XML> <Declaración de la DTD> < hibernate-configuration - Definición de la configuración> <session-factory – parámetros de configuración> <property – especificación de los parámetros de configuración> <mapping - especificación de los archivos de mapeo>
46. Configuración de la API En cualquier aplicación que use Hibernate aparecen cuatro objetos básicos: Configuration: es el objeto que contiene la información necesaria para conectarse a la base de datos. Es el encargado de leerse el archivo. Hibernate.properties o Hibernate.cfg.xmlTambién es el encargado de procesar la información correspondiente a los aparejamientos. Es el encargado de leerse y verificar los archivos de emparejamiento nombreDeClasse.hbm.xml. Configuration cfg = new Configuration(); cfg.configure(RUTA_ARCHIVO_CONF); //agrega do clases dinamicamente Cfg.addClass(MiClase.Class);
47. Configuración de la API SessionFactory: es una fábrica de Sessions. Un objeto Configuration es capaz de crear una SessionFactory ya que tiene toda la información necesaria.Normalmente, una aplicación sólo tiene una SessionFactory. A partir del hibernate.cfg.xml podemos crear un SessionFactory, que es el objeto mediante el cual abrimos nuevas sesiones de Hibernate. SessionFactory sessionFactory = cfg.buildSessionFactory();
48.
49.
50. Esquema de Configuración - Hibernate.properties - Hibernate.cfg.xml - MiClase.hbm.xml - addClass Configuration Base de Datos SessionFactory Session Session Save – Update – Delete – get -load Commit RollBack BeginTransacction
51. Configuración de la API Para insertar objetos en la BBDD usaremos el método save(Object objeto) de Session, para insertar o actualizar si ya existe saveOrUpdate(Object objeto), para borrar delete(Object objeto) y para cargar un objeto desde la BBDD get(String clase, Tipo id) o load(String clase, Tipo id) que devuelven el objeto de la clase indicada por el primer parámetro y con identificador el segundo parámetro si es que existe en la BBDD. Para hacer búsquedas en la base de datos podemos usar find(String consulta) que devuelve una lista con los resultados, o iterate(String consulta) que devuelve un iterador, o bien crear un objeto Query usando createQuery(String consulta) y llamar más tarde al método find() del Query. La consulta en todos los casos estará escrita en un lenguaje similar a SQL propio de Hibernate llamado HQL (HibernateQueryLanguage)
52. Programando la API public class HibernateUtil { privatestatic final SessionFactory sessionFactory; static { try { // Createthe SessionFactory fromstandard (hibernate.cfg.xml) // configfile. Stringpath="mx/model/persistance/hibernate.cfg.xml"; Configuration cf=new Configuration(); cf.addFile(path); sessionFactory=cf.buildSessionFactory(); } catch (Throwable ex) { // Log theexception. System.err.println("Initial SessionFactory creationfailed." + ex); throw new ExceptionInInitializerError(ex); } } publicstatic SessionFactory getSessionFactory() { returnsessionFactory; } }
56. lazy ("true"|"false"): Permite el uso de inicialización "lazy". Este tipo de inicialización hace que los objetos de la colección sean solicitados en demanda y no se carguen todos a la vez. Esto es especialmente útil para optimizar búsquedas, etc...
57. inverse: Señala esta colección como el fin de una asociación bidireccional. Utilizada en relaciones many-to-many sobre todo.
59. sort: Especifica una colección con una ordenación natural o con una clase comparadora dada.
60.
61. Colecciones (Asociaciones) 1 <one-to-one> ( 1 - 1) Si la clase B no posee la misma id del padre, se generará un error de ejecución. Mapping Departamento: <class name=“Departamento" table=“departamentos"> <one-to-one name=“coordinador" class="mx.model.Empleado" /></class> Mapping Empleado: <class name=“Empleado" table=“empleados"> <one-to-one name=“departamento" class="mx.model.Departamento" /></class>
62. Colecciones (Asociaciones) 2 <many-to-one> ( 1 - 1) Definición: En esta relación se maneja de la siguiente forma, una llave foránea en una tabla esta referenciando la llave primaria de otra tabla Escenario: Tenemos 2 clases ,Empleado y Departamento relacionados de la siguiente manera: Empleado Departamento.getCoordinador() //retorna Empleado Hibernate – Mapping: <class name=“Departamento" table=“departamentos"> <many-to-one name="coordinador" column="fk_coordinador" class="mx.model.Empleado"/></class>
63. Colecciones (Asociaciones) 3 <one-to-many> ( 1 - *) Definición: La Clase A debe tener una colección que referencie a la Clase B Escenario: Tenemos 2 clases ,Empleado y Departamento relacionados de la siguiente manera: Set Empleado.getDepartamentos() //retorna Colección de instancias de Departamento Hibernate – Mapping: <class name=“Empleado" table=“empleados"> <set name="departamentos" table="departamentos"> <key column="fk_coordinador"/> <one-to-many class="mx.model.Departamento"/> </set></class>
64. Colecciones (Asociaciones) 4 <many-to-many> ( n - m) Definición: Relación de muchos a muchos donde la clase A posee una colección que referencia a B,como la relación oneToMany,pero B puede tener múltiples A. Escenario: Tenemos 2 clases ,Empleado y Cargo relacionados de la siguiente manera: Set<Cargo>Empleado.getCargos() //retorna colección de instancias de Cargo Hibernate – Mapping: <class name=“Empleado" table=“empleados"> <set name="cargos" table="empleado_cargos"> <key column="fk_empleado"/> <many-to-many class="mx.model.Cargo" column="fk_cargo" /> </set> </class>
65. Hibernate Query Language (HQL) El HQL (HibernateQueryLanguage) es un lenguaje de consulta. En el mundo relacional disponemos del SQL (StructuredQueryLanguage) que nos permite obtener información haciendo preguntas basadas en las tablas y sus columnas. El equivalente en el mundo objetual es el HQL, que nos permite hacer preguntas basadas en los objetos y sus propiedades. Una vez más, Hibernate se encarga de unir los dos mundos. Traduce las consultas que hacemos desde el mundo objetual en HQL al lenguaje de consulta del mundo relacional, el SQL, y transforma los resultados obtenidos en el mundo relacional (filas y columnas) en aquello que tiene sentido en el mundo objetual: objetos.
66. Hibernate Query Language (HQL) El concepto de “traducción” es importante para entender qué hace Hibernate y uno de los sentidos de HQL. Hemos visto más arriba la equivalencia entre una consulta SQL y una en HQL. Así, la consulta FROM Empleado e WHERE e.id = 1 se podría “traducir” a SELECT ID, NOMBRE, APELLIDOS FROM empleados WHERE id = 1 y la consulta FROM Empledo e WHERE e.nombre = ‘Ronald‘ se podría “traducir” a SELECT ID, NOMBRE, APELLIDOS FROM Empleados e WHERE e.NOMBRE = ‘Ronald’
67. HibernateQueryLanguage (HQL) Clausulas : FROM Existen varias formas de simplificar una clase a la hora de realizar la consulta hql> FROM mx.model.Empleado hql> FROM Empleado Dando como resultado una colección de objetos de tipo Empleado SELECT la clausula SELECT selecciona cual(es) objeto (s)y cual (es) propiedad(es) se retornara en el resultado del query. hql> SELECT v.marca FROM Vehiculo as v hql> SELECT v.marca FROM Vehiculo v WHERE v.marcalike ‘toy%’ hql> SELECT user.persona.nombre FROM Usuario user hql> SELECT user.username,p.nombre FROM Usuario user,Persona p La anterior consulta nos retorna Object[ ] WHERE Ayuda a filtrar la lista de instancias retornadas. hql> FROM Usuario user WHERE user.username = ‘rcuello’ hql> FROM Usuario user WHERE user.persona.cedula=123456 hql> FROM Usuario user WHERE username.username IS NOT NULL
68. HibernateQueryLanguage (HQL) ORDER BY La lista retornada por una consulta puede ser ordenada por cualquier propiedad de un objeto. hql> FROM Empleado emp ORDER BY emp.nombreasc hql> FROM Usuario user ORDER BY user.persona.apellidodesc GROUP BY Def SQL :Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Tabla. Tiendas_info Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaríamos, SQL > SELECT tienda, SUM( ganancia ) FROM Tiendas_info GROUP BY tienda Dando como resultado
69. HibernateQueryLanguage (HQL) GROUP BY hql> Selectt.tienda,SUM (t.ganancia) FromTiendaInfo t GROUP BY t.tienda El resultado de esta consulta es una Lista de Objects de tipo arreglo (Object[ ]) Ejemplo: Query q=session.createQuery(“Selectt.tienda,SUM (t.ganancia) FromTiendaInfo t GROUP BY t.tienda “); List lista =q.list(); For(Objectobj : lista){ Object[ ] listaObjetos=(Object[ ])obj; //donde la posicion 0 es igual a t.tienda //la posicion 1 es igual a SUM ( t.ganancia ) }
70. Hibernate Query Language (HQL) FUNCIONES ESCALARES HQL nos permite usar funciones escalares en nuestras consultas. Y las soportadas son las siguientes : Todas tienen las mismas funcionalidades del SQL SELECT COUNT(*) FROM Empleado En nuestro ejemplo, no tenemos más números que los id de las clases, así que no puedo poner ejemplos demasiado interesantes ni prácticos de las funciones escalares, pero a guisa de ejemplo, podemos obtener la media de los id de Empleado: SELECT AVG(e.id) FROM Empleado e También los podemos sumar: SELECT SUM(e.id) FROM Empleado e O obtener los valores máximo y mínimo: SELECT MAX(e.id), MIN(e.id) FROM Empleado e