hibernate tu connais … mais en fait tu connais pas - développeur … · hibernate tu connais …...
TRANSCRIPT
Hibernatetuconnais…maisenfaittuconnaispas
Speaker:EmmanuelBernard(JBoss)
Format:Conférence
Date:22avril2016
Pendantcetteconférence,Emmanuelprésentelesnouveautésdelaversion5desprojets
Hibernate.
Hibernate5ORM
• Bootstrappluspropre
o Prenddesclassesd’unpeupartout:classesentité,XML,Proxy,DataSource
o Modularisationaméliorée
o Découpageen3blocs
§ StandardServiceRegistry:configurationglobale
§ Metadata:hbm.xml,entité,stratégiedenommage
§ SessionFactory
• CompatibleJava8
o Pasdelambdas
o MaissupportData&Time:nouveaumodulehibernate-java8àajouter
o AméliorationsurlesGenericsetAutoClosable
§ Plusbesoindedowncastsession.get()
• AugmentationparBytecode
o Détectiondeschangementsplusintelligentspourlacomparaisonentreles
propriétésd’objet.Lebytecodeenhancementpermetdelimiterlesobjetsà
comparer(dirtytracking)
o Outillagemaven:lazyinitialisation,dirtytracking…
o Pardéfaut,touteslespropriétéssontchargées,sauflorsqu’onappelle@Lazy.
Lorsdupremierappelàunepropriété@Lazy,touteslespropriétéssont
chargées.Introductiond’unenotiondegroupedepropriétévia@LazyGroup
o Managementdesassociationsbidirectionnelles:lamiseàjourd’unobject
d’uncôtéestmisàjourdel’autrecôté
• Cachedesecondniveau
o Moinsd’objetscréésparHibernate(ex:lacléestpartagéeentreHibernateet
lecache)
o Cacheparréférence:tousleslesobjetsquinebougentjamais(objetsde
référenceimmuables)sontpartagésparlesdifférentessessionsHibernates
(plusderecopie).Aactiveravecuser_reference_entries
• Divers
o UUID:superimportantpourle@NoSQLcarpeutêtregéréparleclient.
o Namingstrategy:stratégieimplicitetraduitlenomd’uneclasseenunnom
detable.Onpeutdésormaispersonnaliserlenommage.
o Documentation:groseffortapportépourrafraichirladocumentation.Ilssont
repartisdezéroetontajoutépleind’exemples.Blogsurin.relation.to
HibernateSearch
• Indexationfull-textdéléguéeàLucene
• S’accrocheàunesourcededonnée,leplusconnueétantHibernateORM,pour
mettreàjourl’index
• Clustermaster/save
• Récemment:
o MontéedeversionàLucene5
o Améliorationssurlesperformances:utilisationd’unequeuepourleflush.Se
rapprochedesperfsNRT
o BackendElasticsearch(seréféreràlaconférenceElasticsearchetHibernatesontsurunbateau)
• Annotations:@Indexed,@Spatial,@Field,@Facet,@NumericField,@Latitude,
@Longitude,@IndexedEmbedded
HibernateOGM
• UtiliselesannotationsJPApourpersisterlesentitésdansdesbasesNoSQL
• Support:MongoDB,Infinispan,Neo4j,Redis,EhCache,Cassandra,CouchDB
• PratiquepourdémarreravecleNoSQLsanstropdechangementspourle
développeurexpérimentéenJPA
HibernateValidator
• ImplémentationderéférencedeBeanValidation
• Nouveau:pasdelambda,nomsréelsdesparamètres,DateetTime,Optional,
gestiondescollections:List<@MyNotNull@EmailString>emails
• Lescontraintespeuventêtredéclaréesparprogrammation(DSLpropreàHibernate
Validator)=>permetd’appliquerdynamiquementlescontraintes
HibernateSpatial
• Extensiond’HibernateORMintégrantdesfonctionsspacialesnativesauxbasesde
données.
• Utilisationd’undialectspéciale
• LarequêteJQLchangeunpeu
Questions/Réponses
• Supportd’Hazelcastprévucommecachede2ndniveau?SeconcentresurJCache.
• Supportd’HbasedansHibernateOGM?ouimaisproblèmedebandepassante.
PréfèreseconcentrersurCassandra.
• PourquoiElasticsearchetpasSolr?L’objectifestd’avoirles2.Ilfallaitcommencer
parunmoteur.
• Intégrationd’Hibernate5dansSpringBoot?SûrdansSpringData.Avérifierdans
SpringBoot.