{"id":15771,"date":"2026-09-21T11:44:09","date_gmt":"2026-09-21T09:44:09","guid":{"rendered":"https:\/\/code10it.com\/?p=15771"},"modified":"2026-09-21T11:44:10","modified_gmt":"2026-09-21T09:44:10","slug":"sapui5-jsonmodel-frente-a-odatamodel","status":"publish","type":"post","link":"https:\/\/code10it.com\/es\/sapui5-jsonmodel-vs-odatamodel\/","title":{"rendered":"SAPUI5: JSONModel frente a ODataModel: cu\u00e1ndo utilizar cada uno y por qu\u00e9"},"content":{"rendered":"<h2 id=\"h-a-practical-guide-to-choosing-the-right-model-for-ui-state-and-business-data\" class=\"wp-block-heading\" style=\"font-size:25px\">Una gu\u00eda pr\u00e1ctica para elegir el modelo adecuado para el estado de la interfaz de usuario y los datos de negocio.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando empiezas a trabajar con SAPUI5, JSONModel puede parecer la soluci\u00f3n m\u00e1s sencilla para casi todas las pantallas. Puedes crear un objeto JavaScript, vincularlo a la vista, actualizar una propiedad y ver c\u00f3mo la interfaz de usuario reacciona al instante. Esa simplicidad es \u00fatil, pero tambi\u00e9n puede llevar a un error arquitect\u00f3nico muy com\u00fan: tratar los datos de negocio procedentes de un servicio OData como si se tratara simplemente de otro objeto JSON local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSONModel y ODataModel utilizan conceptos de enlace similares, pero resuelven problemas distintos. La cuesti\u00f3n importante no es qu\u00e9 modelo tiene la sintaxis m\u00e1s sencilla, sino qui\u00e9n es el propietario de los datos y d\u00f3nde deben realizarse operaciones como el filtrado, la paginaci\u00f3n y la persistencia.<\/p>\n\n\n\n<h2 id=\"h-the-three-architectural-differences\" class=\"wp-block-heading\" style=\"font-size:25px\">Las tres diferencias arquitect\u00f3nicas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hay tres diferencias que conviene recordar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Propiedad de los datos: JSONModel contiene datos del lado del cliente, mientras que ODataModel representa entidades gestionadas por un servicio OData.<\/li>\n\n\n\n<li>Ejecuci\u00f3n: JSONModel funciona principalmente en la memoria del navegador, mientras que ODataModel puede delegar las consultas y los cambios en los datos al servidor.<\/li>\n\n\n\n<li>Ciclo de vida: JSONModel es ideal para el estado temporal de la interfaz de usuario, mientras que ODataModel est\u00e1 dise\u00f1ado para datos empresariales remotos, metadatos de servicios y sincronizaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Una regla \u00fatil<\/strong> Es sencillo: si los datos existen gracias a la interfaz de usuario, piensa en JSONModel. Si los datos existen independientemente de la interfaz de usuario y pertenecen al dominio de negocio, piensa en ODataModel.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-1024x576.webp\" alt=\"SAPUI5: JSONModel frente a ODataModel - Imagen 1\" class=\"wp-image-15772\" srcset=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-1024x576.webp 1024w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-300x169.webp 300w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-768x432.webp 768w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-1536x864.webp 1536w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1-18x10.webp 18w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-1.webp 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 id=\"h-jsonmodel-data-controlled-by-the-frontend\" class=\"wp-block-heading\" style=\"font-size:20px\">JSONModel: datos controlados por la interfaz de usuario<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">JSONModel es ideal para valores como indicadores de ocupado, el modo de edici\u00f3n, pesta\u00f1as seleccionadas, filtros locales o el estado temporal de un formulario. Toda la estructura reside en el navegador y est\u00e1 totalmente controlada por el frontend.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const oViewModel = new JSONModel({\n  busy: false,\n  editMode: false,\n  selectedCategory: \"All\"\n});\n \nthis.getView().setModel(oViewModel, \"view\");<\/code><\/pre>\n\n\n\n<h3 id=\"h-why-jsonmodel-works-well-for-local-state\" class=\"wp-block-heading\" style=\"font-size:20px\">Por qu\u00e9 JSONModel funciona bien para el estado local<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es ligero, f\u00e1cil de entender y funciona de forma natural con modelos con nombre, como \u201cview\u201d o \u201cstate\u201d. No hay motivo para enviar una solicitud al backend cuando un usuario abre un panel o cambia la pesta\u00f1a seleccionada. El estado local deber\u00eda, normalmente, permanecer local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La limitaci\u00f3n surge cuando el conjunto de datos es muy grande o debe mantenerse sincronizado con un backend. Un JSONModel no interpreta autom\u00e1ticamente los metadatos de OData, la paginaci\u00f3n del lado del servidor ni la sem\u00e1ntica CRUD remota.<\/p>\n\n\n\n<h3 id=\"h-odatamodel-the-backend-is-the-source-of-truth\" class=\"wp-block-heading\" style=\"font-size:20px\">ODataModel: el backend es la fuente de verdad<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ODataModel es la opci\u00f3n m\u00e1s adecuada cuando la pantalla trabaja con entidades de negocio, como productos, pedidos o clientes, expuestas por un servicio OData. En lugar de copiar esas entidades en una estructura local independiente, SAPUI5 puede vincular los controles directamente al modelo del servicio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De este modo, el backend sigue siendo la fuente de informaci\u00f3n fiable. El modelo interpreta los metadatos del servicio y puede coordinar las lecturas y las modificaciones de datos sin obligar a la aplicaci\u00f3n a crear una segunda copia del mismo estado empresarial.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><Table><\/code><\/pre>\n\n\n\n<h2 id=\"h-server-side-filtering-is-the-architectural-difference\" class=\"wp-block-heading\" style=\"font-size:25px\">El filtrado del lado del servidor es la diferencia arquitect\u00f3nica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La mayor diferencia pr\u00e1ctica se hace evidente con conjuntos de datos m\u00e1s grandes. Imagina un servicio con 50 000 productos. Cargarlo todo en un JSONModel y luego filtrarlo en JavaScript implica transferir y almacenar datos que el usuario quiz\u00e1 nunca necesite.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-1024x576.webp\" alt=\"SAPUI5_ JSONModel frente a ODataModel - Imagen 2\" class=\"wp-image-15775\" srcset=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-1024x576.webp 1024w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-300x169.webp 300w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-768x432.webp 768w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-1536x864.webp 1536w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2-18x10.webp 18w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Image-2.webp 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Con ODataModel, los filtros, la ordenaci\u00f3n y la paginaci\u00f3n pueden traducirse en solicitudes OData, de modo que el backend solo devuelva los registros relevantes. Esto es m\u00e1s que un simple truco para mejorar el rendimiento. Mantiene el procesamiento de datos en la capa que los gestiona y facilita el mantenimiento del frontend.<\/p>\n\n\n\n<h2 id=\"h-the-best-real-world-pattern-use-both-models\" class=\"wp-block-heading\" style=\"font-size:25px\">El mejor enfoque en la pr\u00e1ctica: utilizar ambos modelos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En una aplicaci\u00f3n SAPUI5 real, la respuesta no suele ser ni JSONModel ni ODataModel. Son ambas, con responsabilidades bien definidas. Utiliza ODataModel para las entidades de negocio y JSONModel para el estado de la interfaz de usuario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, una p\u00e1gina de \u201cProductos\u201d puede vincular su tabla a \/Products del modelo OData predeterminado, mientras que un modelo denominado \u00abview\u00bb almacena los campos \u00abbusy\u00bb, \u00abeditMode\u00bb y \u00abselectedCategory\u00bb. La vista XML puede utilizar ambos modelos al mismo tiempo. Esta separaci\u00f3n permite distinguir de inmediato qu\u00e9 estado pertenece al backend y cu\u00e1l pertenece \u00fanicamente a la pantalla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-1024x576.webp\" alt=\"SAPUI5_ JSONModel frente a ODataModelSAPUI5_ JSONModel frente a ODataModel - Imagen 3\" class=\"wp-image-15774\" srcset=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-1024x576.webp 1024w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-300x169.webp 300w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-768x432.webp 768w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-1536x864.webp 1536w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3-18x10.webp 18w, https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModelSAPUI5_-JSONModel-vs-ODataModel-Image-3.webp 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 id=\"h-the-anti-pattern-copying-odata-into-jsonmodel\" class=\"wp-block-heading\" style=\"font-size:25px\">El antipatr\u00f3n: copiar OData en JSONModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una pr\u00e1ctica habitual consiste en leer \/Products desde OData, copiar el resultado en un nuevo JSONModel y vincular la tabla a esa copia. Funciona, pero a menudo elimina la raz\u00f3n por la que se utiliza ODataModel en primer lugar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez duplicados los datos, debes decidir qu\u00e9 copia es la actual, actualizarla tras cada modificaci\u00f3n y reproducir manualmente los comportamientos que ya ofrece ODataModel. Existen excepciones v\u00e1lidas, por ejemplo, cuando es necesario transformar los datos de forma significativa para adaptarlos a una estructura temporal exclusiva del cliente. No obstante, la copia debe ser una decisi\u00f3n deliberada, no la arquitectura por defecto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Evita utilizar esto como patr\u00f3n por defecto\noModel.read(\"\/Products\", {\n  success: ({ results }) =&gt; {\n    this.getView().setModel(new JSONModel(results), \"products\");\n  }\n});<\/code><\/pre>\n\n\n\n<h3 id=\"h-binding-paths-look-similar-behavior-does-not\" class=\"wp-block-heading\" style=\"font-size:20px\">Las rutas de enlace tienen un aspecto similar, pero su comportamiento no es el mismo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tanto un enlace JSONModel, como {view&gt;\/editMode}, como un enlace ODataModel, como {\/Products}, tienen el aspecto de rutas en XML. Esa similitud visual puede ocultar una diferencia importante. Una ruta JSON apunta a datos que ya obran en poder del cliente. Una ruta OData puede representar un conjunto de entidades remotas cuyos datos se cargan, filtran o actualizan a trav\u00e9s del servicio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al revisar una pantalla de SAPUI5, no juzgues el modelo \u00fanicamente por la sintaxis de enlace. Sigue el rastro hasta llegar a su propietario.<\/p>\n\n\n\n<h2 id=\"h-best-practices\" class=\"wp-block-heading\" style=\"font-size:25px\">Buenas pr\u00e1cticas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliza modelos JSONModels con nombre para el estado espec\u00edfico de la interfaz de usuario, como \u201cview\u201d, \u201cstate\u201d o \u201cfilters\u201d. Mant\u00e9n el ODataModel principal centrado en los datos de negocio. Evita cargar grandes colecciones remotas en JSON solo para que el enlace resulte m\u00e1s sencillo. Utiliza el filtrado, la ordenaci\u00f3n, la paginaci\u00f3n y $select del lado del servidor cuando el servicio los admita. Por \u00faltimo, mant\u00e9n las responsabilidades del modelo lo suficientemente claras como para que otro desarrollador pueda entender la pantalla sin tener que rastrear cada m\u00e9todo del controlador.<\/p>\n\n\n\n<h2 id=\"h-advantages-and-disadvantages\" class=\"wp-block-heading\" style=\"font-size:25px\">Ventajas y desventajas<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>\u00c1rea<\/strong><\/th><th><strong>Resumen<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Ventajas de JSONModel<\/td><td>Estado local sencillo, configuraci\u00f3n ligera, estructura de JavaScript sencilla, ideal para valores temporales de la interfaz de usuario.<\/td><\/tr><tr><td>Desventajas de JSONModel<\/td><td>Solo memoria del cliente, sin persistencia remota nativa; no es la opci\u00f3n ideal para grandes conjuntos de datos de servidor.<\/td><\/tr><tr><td>Ventajas de ODataModel<\/td><td>Enlace OData nativo, consultas al backend, metadatos, paginaci\u00f3n y operaciones con datos remotos.<\/td><\/tr><tr><td>Desventajas de ODataModel<\/td><td>M\u00e1s conceptos de servicio que hay que comprender y que resultan innecesarios para un estado sencillo de la interfaz de usuario local.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"h-conclusion\" class=\"wp-block-heading\" style=\"font-size:25px\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSONModel y ODataModel no son soluciones competidoras. Son herramientas complementarias para diferentes niveles de estado. JSONModel es excelente cuando el front-end es el propietario de los datos y necesita un estado r\u00e1pido y temporal. ODataModel es la mejor opci\u00f3n cuando los datos pertenecen a un servicio de back-end y deben consultarse, modificarse o sincronizarse como datos empresariales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las aplicaciones SAPUI5 m\u00e1s f\u00e1ciles de mantener suelen combinar ambas cosas: el estado local de la interfaz de usuario se almacena en un peque\u00f1o JSONModel, mientras que las entidades de negocio permanecen conectadas al ODataModel. Una vez que queda clara esa relaci\u00f3n, la selecci\u00f3n del modelo resulta mucho m\u00e1s sencilla y es m\u00e1s f\u00e1cil comprender la arquitectura de la aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Compara el modelo JSON de SAPUI5 con el modelo OData, aprende cu\u00e1ndo utilizar cada uno, evita los principales escollos y separa de forma eficaz el estado de la interfaz de usuario de los datos de negocio.<\/p>","protected":false},"author":19,"featured_media":15773,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[17],"tags":[18,19,32],"class_list":["post-15771","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-sap","tag-sap-cloud-platform","tag-sap-integration"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SAPUI5 JSONModel vs ODataModel: When to Use Each<\/title>\n<meta name=\"description\" content=\"Compare SAPUI5 JSONModel vs ODataModel, learn when to use each model, avoid key pitfalls and separate UI state from business data effectively.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/code10it.com\/es\/sapui5-jsonmodel-frente-a-odatamodel\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SAPUI5: JSONModel vs ODataModel - When to Use Each and Why\" \/>\n<meta property=\"og:description\" content=\"Compare SAPUI5 JSONModel vs ODataModel, learn when to use each model, avoid key pitfalls and separate UI state from business data effectively.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/code10it.com\/es\/sapui5-jsonmodel-frente-a-odatamodel\/\" \/>\n<meta property=\"og:site_name\" content=\"Code10\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-21T09:44:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-21T09:44:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\n\t<meta property=\"og:image:height\" content=\"941\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Oriol Casanova\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oriol Casanova\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/\"},\"author\":{\"name\":\"Oriol Casanova\",\"@id\":\"https:\\\/\\\/code10it.com\\\/#\\\/schema\\\/person\\\/0a3d90a32c214705b7769f420a602a42\"},\"headline\":\"SAPUI5: JSONModel vs ODataModel &#8211; When to Use Each and Why\",\"datePublished\":\"2026-09-21T09:44:09+00:00\",\"dateModified\":\"2026-09-21T09:44:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/\"},\"wordCount\":1022,\"publisher\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp\",\"keywords\":[\"SAP\",\"SAP Cloud Platform\",\"SAP Integration\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/\",\"url\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/\",\"name\":\"SAPUI5 JSONModel vs ODataModel: When to Use Each\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp\",\"datePublished\":\"2026-09-21T09:44:09+00:00\",\"dateModified\":\"2026-09-21T09:44:10+00:00\",\"description\":\"Compare SAPUI5 JSONModel vs ODataModel, learn when to use each model, avoid key pitfalls and separate UI state from business data effectively.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp\",\"contentUrl\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp\",\"width\":1672,\"height\":941,\"caption\":\"SAPUI5_ JSONModel vs ODataModel - Featured Image (1)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/code10it.com\\\/sapui5-jsonmodel-vs-odatamodel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/code10it.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SAPUI5: JSONModel vs ODataModel &#8211; When to Use Each and Why\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/code10it.com\\\/#website\",\"url\":\"https:\\\/\\\/code10it.com\\\/\",\"name\":\"Code10\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/code10it.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/code10it.com\\\/#organization\",\"name\":\"Code10\",\"url\":\"https:\\\/\\\/code10it.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/code10it.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/Code10-final-02.png\",\"contentUrl\":\"https:\\\/\\\/code10it.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/Code10-final-02.png\",\"width\":221,\"height\":62,\"caption\":\"Code10\"},\"image\":{\"@id\":\"https:\\\/\\\/code10it.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/code10it.com\\\/#\\\/schema\\\/person\\\/0a3d90a32c214705b7769f420a602a42\",\"name\":\"Oriol Casanova\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g\",\"caption\":\"Oriol Casanova\"},\"url\":\"https:\\\/\\\/code10it.com\\\/es\\\/author\\\/oriol_casanova\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SAPUI5 JSONModel frente a ODataModel: cu\u00e1ndo utilizar cada uno","description":"Compara el modelo JSON de SAPUI5 con el modelo OData, aprende cu\u00e1ndo utilizar cada uno, evita los principales escollos y separa de forma eficaz el estado de la interfaz de usuario de los datos de negocio.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/code10it.com\/es\/sapui5-jsonmodel-frente-a-odatamodel\/","og_locale":"es_ES","og_type":"article","og_title":"SAPUI5: JSONModel vs ODataModel - When to Use Each and Why","og_description":"Compare SAPUI5 JSONModel vs ODataModel, learn when to use each model, avoid key pitfalls and separate UI state from business data effectively.","og_url":"https:\/\/code10it.com\/es\/sapui5-jsonmodel-frente-a-odatamodel\/","og_site_name":"Code10","article_published_time":"2026-09-21T09:44:09+00:00","article_modified_time":"2026-09-21T09:44:10+00:00","og_image":[{"width":1672,"height":941,"url":"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp","type":"image\/webp"}],"author":"Oriol Casanova","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Oriol Casanova","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#article","isPartOf":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/"},"author":{"name":"Oriol Casanova","@id":"https:\/\/code10it.com\/#\/schema\/person\/0a3d90a32c214705b7769f420a602a42"},"headline":"SAPUI5: JSONModel vs ODataModel &#8211; When to Use Each and Why","datePublished":"2026-09-21T09:44:09+00:00","dateModified":"2026-09-21T09:44:10+00:00","mainEntityOfPage":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/"},"wordCount":1022,"publisher":{"@id":"https:\/\/code10it.com\/#organization"},"image":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#primaryimage"},"thumbnailUrl":"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp","keywords":["SAP","SAP Cloud Platform","SAP Integration"],"articleSection":["Blog"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/","url":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/","name":"SAPUI5 JSONModel frente a ODataModel: cu\u00e1ndo utilizar cada uno","isPartOf":{"@id":"https:\/\/code10it.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#primaryimage"},"image":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#primaryimage"},"thumbnailUrl":"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp","datePublished":"2026-09-21T09:44:09+00:00","dateModified":"2026-09-21T09:44:10+00:00","description":"Compara el modelo JSON de SAPUI5 con el modelo OData, aprende cu\u00e1ndo utilizar cada uno, evita los principales escollos y separa de forma eficaz el estado de la interfaz de usuario de los datos de negocio.","breadcrumb":{"@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#primaryimage","url":"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp","contentUrl":"https:\/\/code10it.com\/wp-content\/uploads\/2026\/09\/SAPUI5_-JSONModel-vs-ODataModel-Featured-Image-1.webp","width":1672,"height":941,"caption":"SAPUI5_ JSONModel vs ODataModel - Featured Image (1)"},{"@type":"BreadcrumbList","@id":"https:\/\/code10it.com\/sapui5-jsonmodel-vs-odatamodel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/code10it.com\/"},{"@type":"ListItem","position":2,"name":"SAPUI5: JSONModel vs ODataModel &#8211; When to Use Each and Why"}]},{"@type":"WebSite","@id":"https:\/\/code10it.com\/#website","url":"https:\/\/code10it.com\/","name":"Code10","description":"","publisher":{"@id":"https:\/\/code10it.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/code10it.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/code10it.com\/#organization","name":"Code10","url":"https:\/\/code10it.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/code10it.com\/#\/schema\/logo\/image\/","url":"https:\/\/code10it.com\/wp-content\/uploads\/2024\/12\/Code10-final-02.png","contentUrl":"https:\/\/code10it.com\/wp-content\/uploads\/2024\/12\/Code10-final-02.png","width":221,"height":62,"caption":"Code10"},"image":{"@id":"https:\/\/code10it.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/code10it.com\/#\/schema\/person\/0a3d90a32c214705b7769f420a602a42","name":"Oriol Casanova","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/badb5d803db0aee7515fe2ae130ff2571a2f14cb2a51217d9fa6742f9d285b43?s=96&d=mm&r=g","caption":"Oriol Casanova"},"url":"https:\/\/code10it.com\/es\/author\/oriol_casanova\/"}]}},"_links":{"self":[{"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/posts\/15771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/comments?post=15771"}],"version-history":[{"count":5,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/posts\/15771\/revisions"}],"predecessor-version":[{"id":15913,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/posts\/15771\/revisions\/15913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/media\/15773"}],"wp:attachment":[{"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/media?parent=15771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/categories?post=15771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code10it.com\/es\/wp-json\/wp\/v2\/tags?post=15771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}