{"id":11516,"date":"2016-07-12T01:46:23","date_gmt":"2016-07-12T08:46:23","guid":{"rendered":"\/blog\/?p=11516"},"modified":"2023-06-05T16:07:34","modified_gmt":"2023-06-05T14:07:34","slug":"developing-with-java-persistence-api-in-exo-platform","status":"publish","type":"post","link":"https:\/\/www.exoplatform.com\/blog\/developing-with-java-persistence-api-in-exo-platform\/","title":{"rendered":"Developing with Java Persistence API in eXo Platform"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11516\" class=\"elementor elementor-11516\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-section elementor-top-section elementor-element elementor-element-43c3b25 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"43c3b25\" data-element_type=\"section\" id=\"sec-image-title\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-d618709\" data-id=\"d618709\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dc7ab29 elementor-align-left elementor-widget elementor-widget-post-info\" data-id=\"dc7ab29\" data-element_type=\"widget\" id=\"author-time\" data-widget_type=\"post-info.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/plugins\/elementor\/assets\/css\/widget-icon-list.min.css\"><link rel=\"stylesheet\" href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/plugins\/elementor-pro\/assets\/css\/widget-theme-elements.min.css\">\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-a070ed2 elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"bsf-rt-reading-time\"><span class=\"bsf-rt-display-label\" prefix=\"Reading Time\">\n\t\t<\/span> <span class=\"bsf-rt-display-time\" reading_time=\"4\"><\/span> \n\t\t<span class=\"bsf-rt-display-postfix\" postfix=\"min\"><\/span><\/span>\n\t\t  \n\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-c638fde elementor-inline-item\" itemprop=\"author\">\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/author\/brahim-jaouane\/\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-author\">\n\t\t\t\t\t\t\t\t\t\tBrahim Jaouane\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-f24db26 elementor-inline-item\" itemprop=\"datePublished\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-calendar\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-date\">\n\t\t\t\t\t\t\t\t\t\tjuillet 12, 2016\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-1118aa3 undertitle elementor-widget elementor-widget-heading\" data-id=\"1118aa3\" data-element_type=\"widget\" id=\"bigtitle\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor - v3.13.2 - 11-05-2023 *\/\r\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h1 class=\"elementor-heading-title elementor-size-default\">Developing with Java Persistence API in eXo Platform<\/h1>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-a365b8d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a365b8d\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor - v3.13.2 - 11-05-2023 *\/\r\n.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:\"\";border-bottom:0;flex-grow:1;border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-top:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}<\/style>\t\t<div class=\"elementor-divider\">\r\n\t\t\t<span class=\"elementor-divider-separator\">\r\n\t\t\t\t\t\t<\/span>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-add0a83 elementor-widget elementor-widget-text-editor\" data-id=\"add0a83\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor - v3.13.2 - 11-05-2023 *\/\r\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\teXo Platform 4.3 comes with an integration of <strong>JPA<\/strong> (<strong>Java Persistence API<\/strong>). \t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-96ee433 elementor-widget elementor-widget-text-editor\" data-id=\"96ee433\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tJPA is a <a href=\"https:\/\/spd.group\/java-development-services\/\" target=\"_blank\" rel=\"noopener\"><u>Java application<\/u><\/a> programming interface specification that describes the management of relational data in Java applications. It is used to define how a Java class (called an entity) maps to a relational database table through standard annotations or XML. \n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-cc11b03\" data-id=\"cc11b03\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e10e0ad elementor-widget elementor-widget-image\" data-id=\"e10e0ad\" data-element_type=\"widget\" data-widget_type=\"image.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor - v3.13.2 - 11-05-2023 *\/\r\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/elementor\/thumbs\/DevelopingwithJPA-q0egfxrmli2q8u08jjho8udkmyq7k0xfj189ki9094.jpg\" title=\"DevelopingwithJPA\" alt=\"DevelopingwithJPA\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c1ea244 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c1ea244\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-ca4fdc2\" data-id=\"ca4fdc2\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-354eb87 table-content-cs elementor-widget elementor-widget-table-of-contents\" data-id=\"354eb87\" data-element_type=\"widget\" id=\"sticky-tds\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:&quot;.am__title,h6&quot;,&quot;marker_view&quot;:&quot;bullets&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;vh&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;],&quot;_animation&quot;:&quot;none&quot;,&quot;icon&quot;:{&quot;value&quot;:&quot;&quot;,&quot;library&quot;:&quot;&quot;},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;vh&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;vh&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;hierarchical_view&quot;:&quot;yes&quot;}\" data-widget_type=\"table-of-contents.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor-pro - v3.8.2 - 21-11-2022 *\/\n.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,\".\") \". \"}<\/style>\t\t<div class=\"elementor-toc__header\">\n\t\t\t<h4 class=\"elementor-toc__header-title\">\n\t\t\t\tContent\t\t\t<\/h4>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<i class=\"elementor-toc__spinner eicon-animation-spin eicon-loading\" aria-hidden=\"true\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-d4817c5\" data-id=\"d4817c5\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a92cb51 elementor-widget elementor-widget-text-editor\" data-id=\"a92cb51\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\t<p>It also defines an EntityManager API for processing queries and transactions on the Java objects against the database.<\/p>\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-71d1dfb elementor-widget elementor-widget-image\" data-id=\"71d1dfb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"403\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-1024x403.png\" class=\"attachment-large size-large wp-image-11519\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-1024x403.png 1024w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-300x118.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-768x302.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-720x283.png 720w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-500x197.png 500w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-360x142.png 360w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-200x79.png 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-100x39.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram-70x28.png 70w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2016\/07\/jpa-diagram.png 1035w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-a3b6d90 elementor-widget elementor-widget-text-editor\" data-id=\"a3b6d90\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tIf you are not familiar with JPA, you can learn more in <a href=\"https:\/\/docs.oracle.com\/javaee\/7\/tutorial\/partpersist.htm\" target=\"_blank\" rel=\"noopener\">the official documentation<\/a>.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-0e2dc9b elementor-widget elementor-widget-text-editor\" data-id=\"0e2dc9b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThe integration we did in eXo Platform allowed us to <a href=\"https:\/\/www.exoplatform.com\/blog\/why-are-we-moving-away-from-jcr\/\" target=\"_blank\" rel=\"noopener\">start the move to our new data model<\/a> and gave our developers the opportunity to build their own applications easily with JPA.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-bb1ae15 elementor-widget elementor-widget-text-editor\" data-id=\"bb1ae15\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThis article describes this integration and explains how to develop applications using JPA in eXo Platform.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-64d3870 myheader1 elementor-widget elementor-widget-heading\" data-id=\"64d3870\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Hibernate JPA integration<\/h2>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-e3729ca elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"e3729ca\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-divider\">\r\n\t\t\t<span class=\"elementor-divider-separator\">\r\n\t\t\t\t\t\t<\/span>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-bb35031 elementor-widget elementor-widget-text-editor\" data-id=\"bb35031\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tWe use <a href=\"http:\/\/hibernate.org\/orm\/\" target=\"_blank\" rel=\"noopener\">Hibernate<\/a> as the JPA provider, since it is the reference implementation. Starting with eXo Platform 4.3, it is easy to map Java entities with <strong>JPA\/Hibernate<\/strong>. We have prepared everything for you: the data source, persistence unit, entity annotations and generic DAO.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-a72c9f7 elementor-widget elementor-widget-heading\" data-id=\"a72c9f7\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Data source<\/h3>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-17a2643 elementor-widget elementor-widget-text-editor\" data-id=\"17a2643\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tA new <strong>data source<\/strong> is available in eXo Platform by default, called &#8220;<strong>exo-jpa_portal<\/strong>&#8221; (you can change this name thanks to the property &#8220;exo.jpa.datasource.name&#8221; in <a href=\"https:\/\/docs-old.exoplatform.org\/\" target=\"_blank\" rel=\"noopener\">the exo.properties file<\/a>). This data source is used for all operations that use the eXo persistence unit.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-f25656e elementor-widget elementor-widget-heading\" data-id=\"f25656e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Persistence unit and entity manager<\/h3>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-9e87f34 elementor-widget elementor-widget-text-editor\" data-id=\"9e87f34\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tAll JPA operations need a persistence unit and an entity manager to act on a database.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-d807fcc elementor-widget elementor-widget-text-editor\" data-id=\"d807fcc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThe persistence unit defines the data source to use, the entities to manage and a set of configuration parameters.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-3aa2465 elementor-widget elementor-widget-text-editor\" data-id=\"3aa2465\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tWe added a default persistence unit in eXo Platform, called <b>exo-pu<\/b>, which uses the default data source <b>exo-jpa_portal<\/b>, and does not declare any entities:\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-6beca45 elementor-widget elementor-widget-code-highlight\" data-id=\"6beca45\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><persistence xmlns=\"http:\/\/java.sun.com\/xml\/ns\/persistence\"\r\n         \txmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n         \txsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/persistence http:\/\/java.sun.com\/xml\/ns\/persistence\/persistence_2_0.xsd\"\r\n         \tversion=\"2.0\">\r\n    <persistence-unit name=\"exo-pu\" transaction-type=\"RESOURCE_LOCAL\">\r\n        <provider>org.hibernate.ejb.HibernatePersistence<\/provider>\r\n        <non-jta-data-source>java:\/comp\/env\/exo-jpa_portal<\/non-jta-data-source>\r\n        <properties>\r\n            <property name=\"persistenceUnitName\" value=\"exo-pu\"><\/property>\r\n        <\/properties>\r\n    <\/persistence-unit>\r\n<\/persistence><\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-fcfa887 elementor-widget elementor-widget-text-editor\" data-id=\"fcfa887\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThe configuration of this persistence unit can be changed easily by setting parameters, prefixed by &#8220;exo.jpa.&#8221;, in <a href=\"https:\/\/docs.exoplatform.org\/\" target=\"_blank\" rel=\"noopener\">the exo.properties file<\/a>. For example, you can tell <strong>JPA Hibernate<\/strong> to log all SQL queries by adding the following line in exo.properties:\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-21e0231 elementor-widget elementor-widget-code-highlight\" data-id=\"21e0231\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>exo.jpa.hibernate.show_sql=true<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-0c22d21 elementor-widget elementor-widget-heading\" data-id=\"0c22d21\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Entities<\/h3>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-d81ae78 elementor-widget elementor-widget-text-editor\" data-id=\"d81ae78\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\teXo Platform provides an annotation to add a JPA entity to its persistence unit (exo-pu): <b>@ExoEntity<\/b>. Let\u2019s see an example:\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-79c8cb2 elementor-widget elementor-widget-code-highlight\" data-id=\"79c8cb2\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>@Entity(name = \"TaskTask\")\r\n@ExoEntity\r\npublic class Task {\r\n    @Id\r\n    @SequenceGenerator(name=\"SEQ_TASK_TASKS_TASK_ID\", sequenceName=\"SEQ_TASK_TASKS_TASK_ID\")\r\n    @GeneratedValue(strategy=GenerationType.AUTO, generator=\"SEQ_TASK_TASKS_TASK_ID\")\r\n    @Column(name = \"TASK_ID\")\r\n    private long    \tid;\r\n\r\n    private String  \ttitle;\r\n\r\n    private String  \tdescription;\r\n\r\n    ...\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-b8433e4 elementor-widget elementor-widget-text-editor\" data-id=\"b8433e4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThis is an extract of the task entity. As you can see, it is a standard JPA entity (annotated by @Entity). The only difference is the addition of the annotation @ExoEntity, nothing else. Adding this annotation and putting this class in the server classpath automatically adds this entity to the eXo persistence unit.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-5f696d1 elementor-widget elementor-widget-heading\" data-id=\"5f696d1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Transactions<\/h3>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-9c17994 elementor-widget elementor-widget-text-editor\" data-id=\"9c17994\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\t@ExoEntity is not the only annotation provided by eXo Platform; we also added an annotation to define transactional methods: <b>@ExoTransactional<\/b>.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-85047b8 elementor-widget elementor-widget-text-editor\" data-id=\"85047b8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tSetting this annotation on a method automatically uses the eXo entity manager to start a new transaction and close it, or to use an existing transaction if one is already open.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-10655e1 elementor-widget elementor-widget-code-highlight\" data-id=\"10655e1\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>@ExoTransactional\r\npublic Task createTask(Task task) {\r\n    ...\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-233f6d4 elementor-widget elementor-widget-text-editor\" data-id=\"233f6d4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tTo make it work, the JCabi Maven plugin must be enabled in your Maven configuration. You have two options:\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-107c579 elementor-widget elementor-widget-heading\" data-id=\"107c579\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-full wp-image-25828\" src=\"https:\/\/www-dev.exoplatform.com\/blog\/wp-content\/uploads\/2022\/12\/pucejaune.jpg\" alt=\"\" width=\"7\" height=\"6\" \/> Either use the eXo addon parent POM (Project Object Model) as your project parent POM, <a href=\"https:\/\/github.com\/exoplatform\/task\/blob\/1.0.0\/pom.xml#L24-L28\" target=\"_blank\" rel=\"noopener\">as Task does<\/a>:<\/h4>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-7381dd5 elementor-widget elementor-widget-code-highlight\" data-id=\"7381dd5\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><parent>\r\n    <artifactId>addons-parent-pom<\/artifactId>\r\n    <groupId>org.exoplatform.addons<\/groupId>\r\n    <version>6<\/version>\r\n<\/parent><\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-0c55ea8 elementor-widget elementor-widget-text-editor\" data-id=\"0c55ea8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tand declare the plugin JCabi in the module that uses @ExoTransactional:\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-82673a4 elementor-widget elementor-widget-code-highlight\" data-id=\"82673a4\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><build>\r\n    <plugins>\r\n      <plugin>\r\n        <groupId>com.jcabi<\/groupId>\r\n        <artifactId>jcabi-maven-plugin<\/artifactId>\r\n      <\/plugin>\r\n    <\/plugins>\r\n<\/build><\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-87c0265 elementor-widget elementor-widget-heading\" data-id=\"87c0265\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-full wp-image-25828\" src=\"https:\/\/www-dev.exoplatform.com\/blog\/wp-content\/uploads\/2022\/12\/pucejaune.jpg\" alt=\"\" width=\"7\" height=\"6\" \/> Or add the JCabi Maven plugin with the right configuration:<\/h4>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-873e945 elementor-widget elementor-widget-code-highlight\" data-id=\"873e945\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><build>\r\n  <plugins>\r\n    <plugin>\r\n      <groupId>com.jcabi<\/groupId>\r\n      <artifactId>jcabi-maven-plugin<\/artifactId>\r\n      <version>${version.jcabi.plugin}<\/version>\r\n      <executions>\r\n        <execution>\r\n          <id>weave-classes<\/id>\r\n          <phase>process-classes<\/phase>\r\n          <goals>\r\n            <goal>ajc<\/goal>\r\n          <\/goals>\r\n          <configuration>\r\n            <classesDirectory>${project.build.outputDirectory}<\/classesDirectory>\r\n          <\/configuration>\r\n        <\/execution>\r\n        <execution>\r\n          <id>weave-test-classes<\/id>\r\n          <phase>process-test-classes<\/phase>\r\n          <goals>\r\n            <goal>ajc<\/goal>\r\n          <\/goals>\r\n          <configuration>\r\n            <classesDirectory>${project.build.testOutputDirectory}<\/classesDirectory>\r\n          <\/configuration>\r\n        <\/execution>\r\n      <\/executions>\r\n    <\/plugin>\r\n  <\/plugins>\r\n<\/build><\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-a8fa46f elementor-widget elementor-widget-heading\" data-id=\"a8fa46f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Generic DAO<\/h3>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-f41a652 elementor-widget elementor-widget-text-editor\" data-id=\"f41a652\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tTo make developers\u2019 lives even easier, we added a generic DAO, which defines all the basic operations, using the eXo entity manager: find, findAll, create, update, delete, &#8230;\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-5a45998 elementor-widget elementor-widget-text-editor\" data-id=\"5a45998\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tYou just need to extend your DAO class from the class <b>org.exoplatform.commons.persistence.impl.GenericDAOJPAImpl<\/b> to benefit from all these methods:\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-1e93be8 elementor-widget elementor-widget-code-highlight\" data-id=\"1e93be8\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>public class TaskDAOImpl extends GenericDAOJPAImpl<Task, Long> {\r\n    \u2026\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-5d19659 myheader1 elementor-widget elementor-widget-heading\" data-id=\"5d19659\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Initialize and update your data model<\/h2>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-4ed8249 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4ed8249\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-divider\">\r\n\t\t\t<span class=\"elementor-divider-separator\">\r\n\t\t\t\t\t\t<\/span>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-e2a2cd8 elementor-widget elementor-widget-text-editor\" data-id=\"e2a2cd8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tNow that we have designed our model in a Java object, we need to create the data.\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-bde371b elementor-widget elementor-widget-text-editor\" data-id=\"bde371b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tHibernate allows us to generate the data schema automatically from the Java model, thanks to the JPA annotations and the configuration property <a href=\"http:\/\/docs.jboss.org\/hibernate\/orm\/4.2\/manual\/en-US\/html_single\/#configuration-optional\" target=\"_blank\" rel=\"noopener\"><b>hbm2ddl.auto<\/b><\/a>.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-be59b24 elementor-widget elementor-widget-text-editor\" data-id=\"be59b24\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tWe believe that the modelization of the database is a very important phase in designing a solution. It should not rely exclusively on automatic generation from Hibernate but rather it should be part of a dedicated process (design and generation) managed by developers. It is important for the developers to master the model and fully understand it.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-7df5cf1 elementor-widget elementor-widget-text-editor\" data-id=\"7df5cf1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\teXo Platform comes with <a href=\"http:\/\/www.liquibase.org\/\" target=\"_blank\" rel=\"noopener\">Liquibase<\/a>, a tool that allows you to init and incrementally update a database schema and the data. Its use is not mandatory for building custom applications, of course. It simply provides a good and efficient way to manage a database. It\u2019s what we use for eXo applications.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-67de8b4 elementor-widget elementor-widget-text-editor\" data-id=\"67de8b4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\t<p>Liquibase relies on changelog files to init and update the database. These files define a bunch of change sets. Each <b>change set<\/b> defines an operation on the database (table creation, constraint creation, index creation, SQL query execution, \u2026). These operations can range from creating tables and constraints to executing <a href=\"https:\/\/hightouch.com\/sql-dictionary\" target=\"_blank\" rel=\"noopener\">SQL commands<\/a> and adding indexes. As an example, here is an extract of the change logs of the eXo Task application:<\/p>\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-007f9eb elementor-widget elementor-widget-code-highlight\" data-id=\"007f9eb\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<databaseChangeLog\r\n\txmlns=\"http:\/\/www.liquibase.org\/xml\/ns\/dbchangelog\"\r\n\txmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"http:\/\/www.liquibase.org\/xml\/ns\/dbchangelog\r\n                  \thttp:\/\/www.liquibase.org\/xml\/ns\/dbchangelog\/dbchangelog-3.3.xsd\">\r\n\r\n<!-- Managing both DB that use sequences and db that use auto increment -->\r\n<property name=\"autoIncrement\" value=\"true\" dbms=\"mysql,mssql,h2,sybase,db2,hsqldb\"\/>\r\n<property name=\"autoIncrement\" value=\"false\" dbms=\"oracle,postgresql\"\/>\r\n\r\n<!-- Definition of TASK_PROJECTS table -->\r\n<changeSet author=\"task\" id=\"1.0.0-1\">\r\n    <createTable tableName=\"TASK_PROJECTS\">\r\n        <column name=\"PROJECT_ID\" type=\"BIGINT\" autoIncrement=\"${autoIncrement}\" startWith=\"1\">\r\n            <constraints nullable=\"false\" primaryKey=\"true\" primaryKeyName=\"PK_TASK_PROJECTS\" \/>\r\n        <\/column>\r\n        <column name=\"NAME\" type=\"NVARCHAR(50)\">\r\n            <constraints nullable=\"false\"\/>\r\n        <\/column>\r\n        <column name=\"DESCRIPTION\" type=\"NVARCHAR(2000)\">\r\n            <constraints nullable=\"true\"\/>\r\n        <\/column>\r\n        <column name=\"COLOR\" type=\"NVARCHAR(100)\">\r\n            <constraints nullable=\"true\"\/>\r\n        <\/column>\r\n        <column name=\"CALENDAR_INTEGRATED\" type=\"BIT\" defaultValue=\"0\">\r\n            <constraints nullable=\"false\"\/>\r\n        <\/column>\r\n        <column name=\"DUE_DATE\" type=\"TIMESTAMP\">\r\n            <constraints nullable=\"true\"\/>\r\n        <\/column>\r\n        <column name=\"PARENT_PROJECT_ID\" type=\"BIGINT\">\r\n            <constraints foreignKeyName=\"FK_TASK_PRJ_TASK_PRJ_01\" references=\"TASK_PROJECTS(PROJECT_ID)\" nullable=\"true\"\/>\r\n        <\/column>\r\n    <\/createTable>\r\n    <modifySql dbms=\"mysql\">\r\n        <append value=\" ENGINE=INNODB CHARSET=UTF8 COLLATE utf8_general_ci\"\/>\r\n    <\/modifySql>\r\n<\/changeSet>\r\n\r\n<changeSet author=\"task\" id=\"1.0.0-2\" dbms=\"oracle,postgresql\">\r\n    <createSequence sequenceName=\"SEQ_TASK_PROJECTS_PROJECT_ID\" startValue=\"1\"\/>\r\n<\/changeSet>\r\n\r\n...\r\n\r\n<changeSet author=\"task\" id=\"1.0.0-23\">\r\n    <createIndex indexName=\"IDX_TASK_LABELS_01\"\r\n             \ttableName=\"TASK_LABELS\">\r\n        <column name=\"USERNAME\" type=\"NVARCHAR(50)\"\/>\r\n    <\/createIndex>\r\n<\/changeSet>\r\n\r\n...\r\n\r\n<changeSet author=\"task\" id=\"1.0.0-25\">\r\n    <addUniqueConstraint columnNames=\"LABEL_ID, TASK_ID\"\r\n        \tconstraintName=\"UQ_TASK_LABEL_TASK\"\r\n        \ttableName=\"TASK_LABEL_TASK\"\/>\r\n<\/changeSet>Each change set defines an operation on the database (table creation, constraint creation, index creation, SQL query execution, \u2026). As an example, here is an extract of the change logs of the eXo Task application:<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-615f921 elementor-widget elementor-widget-text-editor\" data-id=\"615f921\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThe full content of the change log file of Task 1.0 is available at <a href=\"https:\/\/raw.githubusercontent.com\/exoplatform\/task\/1.0.0\/services\/src\/main\/resources\/db\/changelog\/task.db.changelog-1.0.0.xml\" target=\"_blank\" rel=\"noopener\">https:\/\/raw.githubusercontent.com\/exoplatform\/task\/1.0.0\/services\/src\/main\/resources\/db\/changelog\/task.db.changelog-1.0.0.xml<\/a>.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-bc8bf78 elementor-widget elementor-widget-text-editor\" data-id=\"bc8bf78\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tAs soon as a change set is applied, Liquibase remembers it and does not apply it again on subsequent calls. It relies on the change set ID, so it is very important not to update it once applied, and of course don\u2019t have two identical IDs.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-88c0ce2 elementor-widget elementor-widget-text-editor\" data-id=\"88c0ce2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\teXo Platform launches Liquibase <b>at each startup<\/b>. For the Task application, for example, this means that this change log file will be executed every time you restart your eXo Platform instance. If the Task data have never been initialized, all these change sets will be executed. Then, on subsequent calls, nothing will be done, until we add some new change sets.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-c3febb6 elementor-widget elementor-widget-text-editor\" data-id=\"c3febb6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tTo let eXo Platform know which change log files to apply, you simply have to add the following configuration in your <a href=\"https:\/\/docs-old.exoplatform.org\/\" target=\"_blank\" rel=\"noopener\">extension<\/a>:\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-001bd8d elementor-widget elementor-widget-code-highlight\" data-id=\"001bd8d\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp><external-component-plugins>\r\n    <target-component>org.exoplatform.commons.api.persistence.DataInitializer<\/target-component>\r\n    <component-plugin>\r\n        <name>TaskManagementChangeLogsPlugin<\/name>\r\n        <set-method>addChangeLogsPlugin<\/set-method>\r\n        <type>org.exoplatform.commons.persistence.impl.ChangeLogsPlugin<\/type>\r\n        <init-params>\r\n            <values-param>\r\n                <name>changelogs<\/name>\r\n                <description>Change logs of task management<\/description>\r\n                <value>db\/changelog\/task.db.changelog-1.0.0.xml<\/value>\r\n                <value>db\/changelog\/task.db.changelog-1.1.0.xml<\/value>\r\n            <\/values-param>\r\n        <\/init-params>\r\n    <\/component-plugin>\r\n<\/external-component-plugins><\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-266d656 elementor-widget elementor-widget-text-editor\" data-id=\"266d656\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tThe value of the <b>changelogs<\/b> parameter allows you to define a list of paths (in the classpath) for the change log files. In this example, we define the change logs of Task 1.0.0 and 1.1.0. The convention we use at eXo is one change log file per version, but it is up to you to organize your change logs as you want.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-6657d35 elementor-widget elementor-widget-text-editor\" data-id=\"6657d35\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tOnce these files are in your extension, you are ready to generate your first data schema using Liquibase in eXo Platform.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-e01a028 elementor-widget elementor-widget-text-editor\" data-id=\"e01a028\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tYou can learn more about Liquibase from <a href=\"http:\/\/www.liquibase.org\/documentation\/index.html\" target=\"_blank\" rel=\"noopener\">its official documentation<\/a>.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-b9c29bb myheader1 elementor-widget elementor-widget-heading\" data-id=\"b9c29bb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-92d8f7f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"92d8f7f\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-divider\">\r\n\t\t\t<span class=\"elementor-divider-separator\">\r\n\t\t\t\t\t\t<\/span>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-53ba266 elementor-widget elementor-widget-text-editor\" data-id=\"53ba266\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tNow that you know how to declare JPA entities, configure the persistence unit, create DAO classes, manage transactions and init\/update your data, you are all set to develop applications with JPA.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-aecfebf elementor-widget elementor-widget-text-editor\" data-id=\"aecfebf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\teXo Platform takes care of all the boilerplate code, so you can focus on the essentials.\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-0b7240d elementor-widget elementor-widget-text-editor\" data-id=\"0b7240d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tOf course, you can still manage all of this by yourself (creating and updating your data schema, creating your persistence unit, declaring your entities, implementing default DAO methods, managing transactions, &#8230;), but is it really worthwhile? \ud83d\ude09\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-f17483b elementor-widget elementor-widget-text-editor\" data-id=\"f17483b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\tEnjoy\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e0360fc dow1-cl elementor-reverse-tablet elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e0360fc\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-e095f91\" data-id=\"e095f91\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap\">\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-1bfec43\" data-id=\"1bfec43\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-32cdf59 elementor-cta--skin-cover elementor-cta--valign-middle elementor-widget elementor-widget-call-to-action\" data-id=\"32cdf59\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"call-to-action.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/plugins\/elementor-pro\/assets\/css\/widget-call-to-action.min.css\">\t\t<div class=\"elementor-cta\">\n\t\t\t\t\t<div class=\"elementor-cta__bg-wrapper\">\n\t\t\t\t<div class=\"elementor-cta__bg elementor-bg\" style=\"background-image: url(https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2022\/12\/cta-datasheet-exo-6-9.png);\"><\/div>\n\t\t\t\t<div class=\"elementor-cta__bg-overlay\"><\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-cta__content\">\n\t\t\t\t\n\t\t\t\t<div class=\"elementor-cta__title elementor-cta__content-item elementor-content-item\">eXo Platform 6 Free Datasheet\u200b\u200b<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__description elementor-cta__content-item elementor-content-item\">\n\t\t\t\t\t\tDownload the eXo Platform 6 Datasheet and <br>discover all the features and benefits\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item \">\n\t\t\t\t\t<a class=\"elementor-cta__button elementor-button elementor-size-md\" href=\"https:\/\/www.exoplatform.com\/datasheet-exo-platform-6\/?utm_source=BlogEn&#038;utm_medium=Blog&#038;utm_campaign=Content&#038;utm_content=cta\">\n\t\t\t\t\t\tDownload Now\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9d1a66b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9d1a66b\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2e6d7ea\" data-id=\"2e6d7ea\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-e0a392d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e0a392d\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-9751fcb\" data-id=\"9751fcb\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9d1ad7d elementor-align-left tags_class_element elementor-widget elementor-widget-post-info\" data-id=\"9d1ad7d\" data-element_type=\"widget\" data-widget_type=\"post-info.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-4f61546\" itemprop=\"about\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-tags\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms\">\n\t\t\t\t\t\t\t<span class=\"elementor-post-info__item-prefix\">Tags:<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-post-info__terms-list\">\n\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/exo\/\" class=\"elementor-post-info__terms-list-item\">eXo<\/a>\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-105f90f\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\t&nbsp;\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3d04586\" data-id=\"3d04586\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a3638e0 elementor-widget elementor-widget-shortcode\" data-id=\"a3638e0\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-shortcode\">\n\n<div class=\"kk-star-ratings kksr-shortcode\"\n    data-payload='{&quot;id&quot;:&quot;11516&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;shortcode&quot;,&quot;align&quot;:&quot;&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;valign&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 vote)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-46edd52 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"46edd52\" data-element_type=\"section\" id=\"end-tet\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-b5656d0\" data-id=\"b5656d0\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-807dcce elementor-widget__width-inherit elementor-widget elementor-widget-testimonial\" data-id=\"807dcce\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<style>\/*! elementor - v3.13.2 - 11-05-2023 *\/\r\n.elementor-testimonial-wrapper{overflow:hidden;text-align:center}.elementor-testimonial-wrapper .elementor-testimonial-content{font-size:1.3em;margin-bottom:20px}.elementor-testimonial-wrapper .elementor-testimonial-name{line-height:1.5;display:block}.elementor-testimonial-wrapper .elementor-testimonial-job{font-size:.85em;display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta{width:100%;line-height:1}.elementor-testimonial-wrapper .elementor-testimonial-meta-inner{display:inline-block}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image{display:table-cell;vertical-align:middle}.elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;max-width:none}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-image{padding-right:15px}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-aside .elementor-testimonial-details{text-align:left}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-details,.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{display:block}.elementor-testimonial-wrapper .elementor-testimonial-meta.elementor-testimonial-image-position-top .elementor-testimonial-image{margin-bottom:20px}<\/style>\t\t<div class=\"elementor-testimonial-wrapper\">\r\n\t\t\t\r\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-top\">\r\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\r\n\t\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/author\/brahim-jaouane\/\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/08a29b11a60bdfb03b91818635593676?s=96&amp;d=mm&amp;r=g\" title=\"\" alt=\"\" loading=\"lazy\" \/><\/a>\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-details\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-testimonial-name\" href=\"https:\/\/www.exoplatform.com\/blog\/author\/brahim-jaouane\/\" target=\"_blank\">Brahim Jaouane<\/a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-10abec4\" data-id=\"10abec4\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-57433f8 elementor-widget elementor-widget-testimonial\" data-id=\"57433f8\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\r\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-content\">\n  <figcaption>\n  <\/figcaption>\n<\/div>\r\n\t\t\t\r\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta\">\r\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-details\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-job\">I am a Digital Marketing specialist specialized in SEO at eXo Platform.\r\nPassionate about new technologies and Digital Marketing.\r\nWith 10 years' experience, I support companies in their digital communication strategies and implement the tools necessary for their success.\r\nMy approach combines the use of different traffic acquisition levers and an optimization of the user experience to convert visitors into customers.\r\nAfter various digital experiences in communication agencies as well as in B2B company, I have a wide range of skills and I am able to manage the digital marketing strategy of small and medium-sized companies.<\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-47a1ae4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"47a1ae4\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1478eac\" data-id=\"1478eac\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-275a36e faq-id elementor-widget elementor-widget-heading\" data-id=\"275a36e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Related posts<\/h6>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-519f14c emp-cat elementor-widget elementor-widget-shortcode\" data-id=\"519f14c\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-shortcode\">\n\t<div class=\"am_ajax_post_grid_wrap\"  style=\"background-color: transparent !important; \" data-pagination_type=\"load_more\" data-am_ajax_post_grid='{\"show_filter\":\"yes\",\"btn_all\":\"yes\",\"initial\":\"-1\",\"layout\":\"1\",\"post_type\":\"post\",\"posts_per_page\":\"3\",\"cat\":\"\",\"terms\":\"\",\"paginate\":\"no\",\"hide_empty\":\"true\",\"orderby\":\"date\",\"order\":\"ASC\",\"pagination_type\":\"load_more\",\"infinite_scroll\":\"\",\"animation\":\"\",\"grid_id\":\"\"}'>\r\n\r\n\t\t\t\t\t<div class=\"asr-filter-div\" data-layout=\"1\"><ul>\r\n\t\t\t\t\t\t\t\t\t<li \r\n\r\n\r\n\r\n \r\n   class=\"asr_texonomy active\" style=\"font-weight:bold;\"data_id=\"-1\" style=\"background-color: transparent !important;\">All<\/li>\r\n\t\t\t\t\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1302\">eXo<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"508\">eXo<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"642\">eXo<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1407\">Anerkennung der Mitarbeiter<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"454\">Digital workplace<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"500\">Digital workplace<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1337\">Arbeitsplatz<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"462\">Employee engagement<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"616\">Engagement collaborateur<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1465\">Branchentrends<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"486\">Open source<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"506\">Open source<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"620\">Avenir du travail<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1411\">Cartoon<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"504\">Future of work<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1137\">Actualit\u00e9s<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1366\">Change Management<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"460\">Internal communication<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"492\">Collaboration<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"458\">Collaboration<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1287\">Digital Workplace<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1323\">Digitale Transformation<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"496\">Exp\u00e9rience collaborateur<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"705\">News<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"452\">intranet<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1135\">intranet<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"494\">Communication interne<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1311\">Infografik<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"409\">workplace<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1294\">interne Kommunikation<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"456\">Knowledge management<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"618\">onboarding<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"512\">Employee experience<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"490\">Gestion des connaissances<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1281\">intranet<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"502\">Conduite de changement<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"514\">Employee productivity<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1329\">Kollaboration<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1451\">Leadership<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1187\">Leadership<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"614\">onboarding<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1183\">Cartoon<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"518\">Employee recognition<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1331\">Leitfaden<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1181\">Astuces et bonnes pratiques<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"516\">Change management<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1292\">Mitarbeiter engagement<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"813\">Cartoon<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"411\">Etudes de cas<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1339\">Mitarbeiter Erfahrung<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"622\">Digital transformation<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1175\">Guide<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1317\">Nachrichten<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"799\">Infographic<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1185\">Infographie<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1403\">Onboarding<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1300\">Open source<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"510\">Remote work<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"498\">Productivit\u00e9<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1173\">T\u00e9l\u00e9travail<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"488\">Transformation digitale<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1179\">Tutoriel<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1443\">Actualit\u00e9s produit<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1562\">Extranet<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1461\">Industry trends<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1445\">Product News<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1447\">Produkt Nachrichten<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1309\">Produktivit\u00e4t<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1405\">Reconnaissance des employ\u00e9s<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1307\">Telearbeit<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1463\">Tendances<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1449\">Thought leadership<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1345\">Tipps und Tricks<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"780\">Tips &amp; Tricks<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"819\">Tutorial<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1269\">Uncategorized<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"699\">Uncategorized<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1378\">Wissensmanagement<\/li>\r\n\t\t        \t\t            <li class=\"asr_texonomy\" data_id=\"1304\">Zukunft der Arbeit<\/li>\r\n\t\t        \t        <\/ul><\/div>\r\n\t    \r\n\t    <div class=\"asr-ajax-container\" style=\"background-color: transparent !important;\">\r\n\t\t    <div class=\"asr-loader\">\r\n\t\t    \t<div class=\"lds-dual-ring\"><\/div>\r\n\t\t    <\/div>\r\n\t\t    <div class=\"asrafp-filter-result\">\r\n\t\t    \t<div class=\"am-postgrid-wrapper\">\r\n\r\n\t\t<div class=\"am_post_grid am__col-3 am_layout_1  \">\r\n\t\t\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"am_grid_col\">\r\n\t\t\t\t<div class=\"am_single_grid\">\r\n\t\t\t\t\t<div class=\"am_thumb\">\r\n\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/exo-platform-ai-augmented-digital-workplace\/\">\r\n\t\t\t\t\t\t<img width=\"800\" height=\"533\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1.png 800w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-300x200.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-768x512.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-710x473.png 710w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-492x328.png 492w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-354x236.png 354w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-197x131.png 197w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-100x67.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-45x30.png 45w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/Cover_blog_features_IA_EN-800x533-1-1-640x426.png 640w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t<\/a>\t\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"am_cont\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/exo-platform-ai-augmented-digital-workplace\/\"><h2 class=\"am__title\">eXo Platform launches an AI-augmented Digital Workplace<\/h2><\/a>\r\n\t\t\t\t\t\t<div class=\"am__excerpt\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/exo-platform-ai-augmented-digital-workplace\/\">Today, we are proud to introduce our new AI-augmented Digital Workplace.<\/a>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/exo-platform-ai-augmented-digital-workplace\/\" class=\"am__readmore\">Read More<\/a>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"post_tags\"><a href=\"https:\/\/www.exoplatform.com\/blog\/product-news\/\" title=\"Product News Tag\" class=\"product-news\">Product News<\/a> <\/div>\t\t\t\t\t<div class=\"am_time\">\r\n\t\t\t\t\t\t<span class=\"bsf-rt-reading-time\"><span class=\"bsf-rt-display-label\" prefix=\"Reading Time\">\n\t\t<\/span> <span class=\"bsf-rt-display-time\" reading_time=\"17\"><\/span> \n\t\t<span class=\"bsf-rt-display-postfix\" postfix=\"min\"><\/span><\/span> \r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"am_grid_col\">\r\n\t\t\t\t<div class=\"am_single_grid\">\r\n\t\t\t\t\t<div class=\"am_thumb\">\r\n\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/multi-llm-ai-digital-workplace-launch\/\">\r\n\t\t\t\t\t\t<img width=\"800\" height=\"533\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release.png 800w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-300x200.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-768x512.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-710x473.png 710w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-492x328.png 492w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-354x236.png 354w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-197x131.png 197w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-100x67.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-45x30.png 45w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/exo-platform-AI-press-release-640x426.png 640w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t<\/a>\t\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"am_cont\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/multi-llm-ai-digital-workplace-launch\/\"><h2 class=\"am__title\">eXo Platform Introduces a Controlled, Multi-LLM AI Digital Workplace<\/h2><\/a>\r\n\t\t\t\t\t\t<div class=\"am__excerpt\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/multi-llm-ai-digital-workplace-launch\/\">Paris, March 31, 2026 \u2013 eXo Platform announces the launch of its\u2026<\/a>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/multi-llm-ai-digital-workplace-launch\/\" class=\"am__readmore\">Read More<\/a>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"post_tags\"><a href=\"https:\/\/www.exoplatform.com\/blog\/news\/\" title=\"News Tag\" class=\"news\">News<\/a> <\/div>\t\t\t\t\t<div class=\"am_time\">\r\n\t\t\t\t\t\t<span class=\"bsf-rt-reading-time\"><span class=\"bsf-rt-display-label\" prefix=\"Reading Time\">\n\t\t<\/span> <span class=\"bsf-rt-display-time\" reading_time=\"1\"><\/span> \n\t\t<span class=\"bsf-rt-display-postfix\" postfix=\"min\"><\/span><\/span> \r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"am_grid_col\">\r\n\t\t\t\t<div class=\"am_single_grid\">\r\n\t\t\t\t\t<div class=\"am_thumb\">\r\n\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/orange-business-sovereign-digital-workplace-by-exo-platform\/\">\r\n\t\t\t\t\t\t<img width=\"800\" height=\"533\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1.png\" class=\"attachment-full size-full wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1.png 800w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-300x200.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-768x512.png 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-710x473.png 710w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-492x328.png 492w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-354x236.png 354w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-197x131.png 197w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-100x67.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-45x30.png 45w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2026\/03\/800x533-Banner-Partenaires-Live-Collaboration-1-640x426.png 640w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t<\/a>\t\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"am_cont\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/orange-business-sovereign-digital-workplace-by-exo-platform\/\"><h2 class=\"am__title\">eXo Platform at the heart of the trusted collaboration suite launched by Orange Business<\/h2><\/a>\r\n\t\t\t\t\t\t<div class=\"am__excerpt\">\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/orange-business-sovereign-digital-workplace-by-exo-platform\/\">Faced with rising geopolitical tensions and a growing reliance on U.S.-based collaborative\u2026<\/a>\r\n\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t<a href=\"https:\/\/www.exoplatform.com\/blog\/orange-business-sovereign-digital-workplace-by-exo-platform\/\" class=\"am__readmore\">Read More<\/a>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"post_tags\"><a href=\"https:\/\/www.exoplatform.com\/blog\/news\/\" title=\"News Tag\" class=\"news\">News<\/a> <\/div>\t\t\t\t\t<div class=\"am_time\">\r\n\t\t\t\t\t\t<span class=\"bsf-rt-reading-time\"><span class=\"bsf-rt-display-label\" prefix=\"Reading Time\">\n\t\t<\/span> <span class=\"bsf-rt-display-time\" reading_time=\"4\"><\/span> \n\t\t<span class=\"bsf-rt-display-postfix\" postfix=\"min\"><\/span><\/span> \r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\r\n\t\t\t\t<\/div>\r\n\r\n\t\t<div class=\"am_posts_navigation\">\r\n\t\t<button type='button' data-paged='1' data-next='2' class=' am-post-grid-load-more '>Voir Plus<\/button>\t\t<\/div>\r\n\r\n\t\t<\/div>\t\t    <\/div>\r\n\t    <\/div>\r\n    <\/div>\r\n\r\n\t\n\n\n\n\t\t\t\n\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-36102fb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"36102fb\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e43db0d\" data-id=\"e43db0d\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-90a4868 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"90a4868\" data-element_type=\"section\">\r\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\r\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-a598dda\" data-id=\"a598dda\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-81cb5f6 elementor-widget elementor-widget-heading\" data-id=\"81cb5f6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Leave a Reply<\/h6>\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-490584d\" data-id=\"490584d\" data-element_type=\"column\">\r\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\r\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dd79b42 elementor-widget elementor-widget-text-editor\" data-id=\"dd79b42\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t\t\t<p>( Your e-mail address will not be published)<\/p>\t\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t<div class=\"elementor-element elementor-element-445b2da elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"445b2da\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\r\n\t\t\t\t<div class=\"elementor-widget-container\">\r\n\t\t\t\t\t<div class=\"elementor-divider\">\r\n\t\t\t<span class=\"elementor-divider-separator\">\r\n\t\t\t\t\t\t<\/span>\r\n\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t<\/section>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t","protected":false},"excerpt":{"rendered":"eXo Platform 4.3 comes with an integration of JPA (Java Persistence API). JPA is a Java application programming interface specification that describes the management of relational data in Java applications. It is used to define how a Java class (called an entity) maps to a relational database table through standard annotations or XML. It also [&hellip;]","protected":false},"author":7,"featured_media":13261,"comment_status":"open","ping_status":"open","sticky":false,"template":"main1-article.php","format":"image","meta":[],"categories":[508],"tags":[922,711,703,970,755],"lang":"en","translations":{"en":11516},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/11516"}],"collection":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/comments?post=11516"}],"version-history":[{"count":0,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/11516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/media\/13261"}],"wp:attachment":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/media?parent=11516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/categories?post=11516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/tags?post=11516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}