<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@Repository(&#34;djo&#34;) &#187; JPA</title>
	<atom:link href="https://blog.developpez.com/djo-mos/pcategory/java/jpa/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/djo-mos</link>
	<description></description>
	<lastBuildDate>Sun, 27 Sep 2009 00:05:37 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Sortie de la version finale d&#8217;EclipseLink 1.0</title>
		<link>https://blog.developpez.com/djo-mos/p6044/java/sortie_de_la_version_finale_d_eclipselin_0</link>
		<comments>https://blog.developpez.com/djo-mos/p6044/java/sortie_de_la_version_finale_d_eclipselin_0#comments</comments>
		<pubDate>Wed, 09 Jul 2008 23:57:09 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;équipe d&#8217;EclipseLink vient d&#8217;annoncer la sortie de la version finale d&#8217;EclipseLink, un framework de persistance pour Java utilisable avec des bases de données relationelles, non realtionelles ou fichiers XML, et exposant plusieurs APIs (JPA, JAXB, etc.) EclipseLink est composé de: Mapping Objet/Relationnel : Une implémentation JPA basée sur Toplink Mapping Objet/XML : via MOXy, qui implémente et JAXB et une API spécifique. Généraion de Service Data Object (SDO) à partir d&#8217;un XSD Accès aux DataStores [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;équipe d&rsquo;EclipseLink vient <a href="http://eclipselink.blogspot.com/2008/07/eclipselink-10-released.html">d&rsquo;annoncer la sortie</a> de la version finale d&rsquo;EclipseLink, un framework de persistance pour Java utilisable avec des bases de données relationelles, non realtionelles ou fichiers XML, et exposant plusieurs APIs (JPA, JAXB, etc.)</p>
<p><span id="more-85"></span></p>
<p>EclipseLink est composé de:</p>
<ul>
<li>Mapping Objet/Relationnel : Une implémentation JPA basée sur Toplink</li>
<li>Mapping Objet/XML : via MOXy, qui implémente et JAXB et une API spécifique.</li>
<li>Généraion de Service Data Object (SDO) à partir d&rsquo;un XSD</li>
<li>Accès aux DataStores non relationnels via un adaptateur JCA : EIS</li>
</ul>
<p>A Noter aussi qu&rsquo;EclipseLink est compatible avec OSGi (venant d&rsquo;Eclipse, ça n&rsquo;étonne pas :D).</p>
<p>Quelques liens utiles :<br />
=> <a href="http://www.eclipse.org/eclipselink/downloads/index.php">Télécharger</a><br />
=> <a href="http://www.eclipse.org/eclipselink">Site</a><br />
=> <a href="http://wiki.eclipse.org/EclipseLink">Wiki</a><br />
=> <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.rt.eclipselink">News Group</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mise en place de JPA managé par Spring</title>
		<link>https://blog.developpez.com/djo-mos/p5255/java/mise_en_place_de_jpa_manage_par_spring</link>
		<comments>https://blog.developpez.com/djo-mos/p5255/java/mise_en_place_de_jpa_manage_par_spring#comments</comments>
		<pubDate>Mon, 10 Mar 2008 15:38:35 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour, L&#8217;utilisation de JPA dans un environnement non managé peut se revéler délicate et problématique (la fameuse LazyInitException en est un exemple). Ca vient surtout de la gestion de la session de persistence, qui dans le mode non-managé doit être gérée à la main par le développeur, or la méthode la plus simple qui consiste à ouvrir une session de persistence chaque fois qu&#8217;on en a besoin est pour lemoins inefficace, lourde, et ne marche [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://farm3.static.flickr.com/2216/2373614743_48f0c9f82c_o.jpg" alt="Spring" title="" align="left"/>  Bonjour,<br />
  L&rsquo;utilisation de JPA dans un environnement non managé peut se revéler délicate et problématique (la fameuse LazyInitException en est un exemple).</p>
<p>  Ca vient surtout de la gestion de la session de persistence, qui dans le mode non-managé doit être gérée à la main par le développeur, or la méthode la plus simple qui consiste à ouvrir une session de persistence chaque fois qu&rsquo;on en a besoin est pour lemoins inefficace, lourde, et ne marche pas avec le chargement lazy, ne permet pas une gestion correcte des transactions (étalées sur plusieurs actions), etc.</p>
<p>  C&rsquo;est pour cela qu&rsquo;il vaut mieux (faut) utiliser un conteneur pour la gestion de la session de persistence (JPA, Hibernate, etc.) comme par exemple Spring.</p>
<p>  Je vais présenter rapidement dans ce billet les étapes à suivre pour configurer Spring 2.5 et JPA dans le cadre d&rsquo;une application Web (ne nécessite pas un serveur d&rsquo;application, marche sur Tomcat et Jetty).<br />
<span id="more-169"></span><br />
  Je tiens juste à neter un point important: <strong>Je n&rsquo;ai réussi à faire fonctinner ce qui suit qu&rsquo;avec Hibernate comme fournisseur de persistance.</strong><br />
  Je n&rsquo;ai pas réussi à le faire avec Toplink à cause de soucis de LoadTimeWeaving, et je n&rsquo;ai pas testé avec OpenJPA et JPox.</p>
<p>  Je vais utiliser hsqldb comme base de données ici, mais il est facile de chnager la chose pour utiliser MySQL par exemple ou tout autre SGBD.</p>
<p>  On commence par créer une application web et ajouter les dépendances suivantes:</p>
<ul>
<li>Spring.jar</li>
<li>hsqldb.jar</li>
<li>javassist.jar</li>
<li>antlr-2.7.6.jar</li>
<li>cglib-nodep-2.1_3.jar</li>
<li>dom4j-1.6.1.jar</li>
<li>hibernate-annotations.jar</li>
<li>hibernate-commons-annotations.jar</li>
<li>hibernate-entitymanager.jar</li>
<li>hibernate3.jar</li>
<li>jboss-archive-browsing.jar</li>
<li>jta.jar</li>
<li>persistence.jar</li>
</ul>
<p>Ensuite, déclarer les listeners de Spring dans web.xml:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;listener&gt; <br />
&nbsp; &lt;listener-class&gt; <br />
&nbsp; &nbsp; org.springframework.web.context.ContextLoaderListener <br />
&nbsp; &lt;/listener-class&gt; <br />
&lt;/listener&gt; <br />
&lt;listener&gt; <br />
&nbsp; &lt;listener-class&gt; <br />
&nbsp; &nbsp; org.springframework.web.context.request.RequestContextListener <br />
&nbsp; &lt;/listener-class&gt; <br />
&lt;/listener&gt;</div></div>

</pre>
</blockquote>
<p>Il faut aussi créer le fichier de configuration de Spring: applicationContext.xml dans WEB-INF pour y déclarer:</p>
<ul>
<li>La source de données qu&rsquo;on va utiliser (hsqldb ici).</li>
<li>Le gestionnaire de l&rsquo;EntityManager</li>
<li>Le gestionnaire de transactions</li>
<li>La DI par annotations au lieu de l&rsquo;XML</li>
</ul>
<p>Voici donc ce que ça donne:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; <br />
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; <br />
&nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; <br />
&nbsp; xmlns:p=&quot;http://www.springframework.org/schema/p&quot; <br />
&nbsp; xmlns:context=&quot;http://www.springframework.org/schema/context&quot; <br />
&nbsp; xmlns:tx=&quot;http://www.springframework.org/schema/tx&quot; <br />
&nbsp; xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd <br />
&nbsp; &nbsp; http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd <br />
&nbsp; &nbsp; http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd&quot;&gt; <br />
&nbsp;<br />
&nbsp; &lt;bean id=&quot;dataSource&quot; <br />
&nbsp; &nbsp; class=&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot; <br />
&nbsp; &nbsp; p:driverClassName=&quot;org.hsqldb.jdbcDriver&quot; <br />
&nbsp; &nbsp; p:url=&quot;jdbc:hsqldb:file:db/test&quot; p:username=&quot;sa&quot; p:password=&quot;&quot; /&gt; <br />
&nbsp;<br />
&nbsp; &lt;bean id=&quot;entityManagerFactory&quot; <br />
&nbsp; &nbsp; class=&quot;org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean&quot; <br />
&nbsp; &nbsp; p:dataSource-ref=&quot;dataSource&quot; p:persistence-unit-name=&quot;jpa&quot;&gt; <br />
&nbsp; &nbsp; &lt;property name=&quot;jpaVendorAdapter&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;bean <br />
&nbsp; &nbsp; &nbsp; &nbsp; class=&quot;org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; p:database=&quot;HSQL&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; p:databasePlatform=&quot;org.hibernate.dialect.HSQLDialect&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; p:showSql=&quot;true&quot; p:generate-ddl=&quot;true&quot; /&gt; <br />
&nbsp; &nbsp; &lt;/property&gt; <br />
&nbsp; &lt;/bean&gt; <br />
&nbsp;<br />
&nbsp; &lt;bean id=&quot;transactionManager&quot; <br />
&nbsp; &nbsp; class=&quot;org.springframework.orm.jpa.JpaTransactionManager&quot; <br />
&nbsp; &nbsp; p:entityManagerFactory-ref=&quot;entityManagerFactory&quot; /&gt; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;context:annotation-config /&gt; <br />
&nbsp; <br />
&nbsp; &lt;context:component-scan base-package=&quot;package-de-base&quot; /&gt; <br />
&nbsp; <br />
&nbsp; &lt;tx:annotation-driven /&gt; <br />
&lt;/beans&gt;</div></div>

</pre>
</blockquote>
<p>ça ne devrait pas poser de problème si vous connaissez déjà Spring.<br />
La seule chose à signaler est de remplacer &laquo;&nbsp;package-de-base&nbsp;&raquo; par le nom de package parent des tous les classes bénificiant de DI.</p>
<p>Voici maintenant persistence.xml:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;persistence xmlns=&quot;http://java.sun.com/xml/ns/persistence&quot; <br />
&nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; <br />
&nbsp; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd&quot; <br />
&nbsp; version=&quot;1.0&quot;&gt; <br />
&nbsp;<br />
&nbsp; &lt;persistence-unit name=&quot;jpa&quot; transaction-type=&quot;RESOURCE_LOCAL&quot;&gt; <br />
&nbsp; &nbsp; &lt;class&gt;model.dto.User&lt;/class&gt; <br />
&nbsp; &nbsp; &lt;class&gt;model.dto.Log&lt;/class&gt; <br />
&nbsp; &lt;/persistence-unit&gt; <br />
&nbsp;<br />
&lt;/persistence&gt;</div></div>

</pre>
</blockquote>
<p>Veuillez noter qu&rsquo;on utilise RESOURCE_LOCAL au lieu de JTA, qu&rsquo;on ne déclare aucunepropriété spécifique à Hibernate (url, usr, pwd, etc.) vu que c&rsquo;est déjà fait dans applicationContext et qu&rsquo;on utilise le même nom pour l&rsquo;unité de persistence que dans applicationContext.xml.</p>
<p>Je vais maintenant montrer comme créer un DAO qui utilise un EntityManager injecté par Spring:</p>
<blockquote><pre><code class="codecolorer text default"><span class="text">&nbsp;</span></code></pre>
<p>@Repository<br />
public class UserDao {<br />
	@PersistenceContext(type = PersistenceContextType.EXTENDED)<br />
	private EntityManager em;</p>
<p>	public User findById(Long id) {<br />
		return em.find(User.class, id);<br />
	}</p>
<p>	@SuppressWarnings(&laquo;&nbsp;unchecked&nbsp;&raquo;)<br />
	public List<User> findAll() {<br />
		return em.createQuery(&laquo;&nbsp;select u from User u&nbsp;&raquo;)<br />
				.getResultList();<br />
	}</p>
<p>	public User makePersistent(User entity) {<br />
		return em.merge(entity);<br />
	}</p>
<p>	public void makeTransient(User entity) {<br />
		em.remove(entity);<br />
	}<br />
}
</p></blockquote>
<p>Deux choses à signaler:</p>
<ul>
<li>J&rsquo;annote le DAO par @Repository pour le marquer en tant que Spring Bean (plus autres choses, comme la translation des exceptions, etc.).</li>
<li>J&rsquo;annote l&rsquo;EntityManager par @PersistenceContext(type = PersistenceContextType.EXTENDED) pour indiquer à Spring qu&rsquo;il doit l&rsquo;injecter et qu&rsquo;en plus il doit être en mode étendu, c&rsquo;est à dire que sa durée de vie est celle de l&rsquo;application, et non pas crée à la demande.</li>
</ul>
<p>Le reste est du JPA ordinaire.<br />
C&rsquo;est avec le mode étendu qu&rsquo;on bébéficie de la puissance de Spring/JPA en mode managé. Plus de LazyInitException ou encore de Detached Entity <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Passons maitnenant à la gestion des transactions.<br />
Je ne l&rsquo;ai pas mis dans le DAO (comme on le faisiat en mode non managé) car ça n&rsquo;a pas de sens.<br />
Une transaction doit englober une opération de la couche métier, et nnon pas dans la couche DAO pour être vraiment utile et garantir un état homogène des données.</p>
<p>Suppososns donc qu&rsquo;on a une classe UserService de la couche Service doit voici le code:</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@Service <br />
public class UserService { <br />
&nbsp; @Resource <br />
&nbsp; private UserDao userDao; <br />
&nbsp;<br />
&nbsp; @Resource <br />
&nbsp; private LogDao logDao; <br />
&nbsp;<br />
&nbsp; @Transactional <br />
&nbsp; public User createUser(user){ <br />
&nbsp; &nbsp; User res=userDao.makePersistent(user); <br />
&nbsp; &nbsp; logDao.makePersistent(new Log(&quot;Created user &quot;+user)); <br />
&nbsp; &nbsp; return res; <br />
&nbsp; } <br />
}</div></div>

</pre>
</blockquote>
<p>Place aux explications:</p>
<ul>
<li>J&rsquo;ai annoté la classe avec @Service pour la marquer en tant que Spring Bean, et plus précisément comme faisant partie de la couche Service.</li>
<li>J&rsquo;ai déclaré deux champs (de type MachinDao) annotés avec @Resource pour les marquer comme dépendances que Spring doit remplir</li>
<li>J&rsquo;ai annoté la méthode createUser avec @Transactional, pour indiquer à Spring qu&rsquo;il doit l&rsquo;englober dans une trasaction.</li>
</ul>
<p>Ainsi, on aura jamais le cas ou l&rsquo;utilisateur ne sera pas crée à cause d&rsquo;une erreur tandis qu&rsquo;une entrée dans le log a été crée.</p>
<p>Voilou voili ! C&rsquo;est la fin de ce (long long) billet, en attendant que je pondes un article sur la chose.</p>
<p>Une application exemple avec les sources <a href="http://blog.developpez.com/djo-mos?title=application_exemple_jpa_manage_par_sprin#more5861">est disponible en téléchargement ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Application exemple (JPA managé par Spring)</title>
		<link>https://blog.developpez.com/djo-mos/p5861/java/application_exemple_jpa_manage_par_sprin</link>
		<comments>https://blog.developpez.com/djo-mos/p5861/java/application_exemple_jpa_manage_par_sprin#comments</comments>
		<pubDate>Mon, 09 Jun 2008 18:47:10 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Suite à ce billet que j&#8217;ai rédigé pour montrer comment mettre en place JPA/Hibernate en mode managé avec Spring, on m&#8217;a à maintes reprises demandé de fournir une application exemple pour montrer en pratique ces concepts. Cela date déjà d&#8217;un peu, et je tiens à m&#8217;excuser pour ce retard (j&#8217;avais toutefois quelques empêchements: boulot, PC mort et remplacé par la suite, etc.). En tout cas, bonne nouvelle: l&#8217;application exemple est enfin là et peut être [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Suite <a href="http://blog.developpez.com/djo-mos?title=mise_en_place_de_jpa_manage_par_spring">à ce billet</a> que j&rsquo;ai rédigé pour montrer comment mettre en place JPA/Hibernate en mode managé avec Spring, on m&rsquo;a à maintes reprises demandé de fournir une application exemple pour montrer en pratique ces concepts.<br />
<span id="more-24"></span><br />
Cela date déjà d&rsquo;un peu, et je tiens à m&rsquo;excuser pour ce retard (j&rsquo;avais toutefois quelques empêchements: boulot, PC mort et remplacé par la suite, etc.).</p>
<p>En tout cas, bonne nouvelle: l&rsquo;application exemple est enfin là et peut être <a href="ftp://ftp-developpez.com/djo-mos/data/blog/spring-managed-jpa.war">téléchargée ici</a>.<br />
Il s&rsquo;agit d&rsquo;un WAR avec les sources.</p>
<p>J&rsquo;ai en gros réfactoré l&rsquo;application exemple de mon article &laquo;&nbsp;<a href="http://djo-mos.developpez.com/tutoriels/java/crud-jsf-jpa/">Création d&rsquo;une application de type CRUD avec JSF et JPA</a>&nbsp;&raquo; en injectant Spring dans l&rsquo;équation.</p>
<p>Bonne exécution <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Sortie de l&#8217;Early Draft de JPA 2.0</title>
		<link>https://blog.developpez.com/djo-mos/p5603/annonces/sortie_de_l_early_draft_de_jpa_2_0</link>
		<comments>https://blog.developpez.com/djo-mos/p5603/annonces/sortie_de_l_early_draft_de_jpa_2_0#comments</comments>
		<pubDate>Sat, 03 May 2008 02:26:13 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Annonces]]></category>
		<category><![CDATA[JPA]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;Expert Group de la JSR 317 vient enfin de sortir un Early Draft pour le futur JPA 2.0. Voici quelques unes des nouveautés que JPA 2.0 apporterait: Ajout d&#8217;une annotation @Access qui permet de spécifier le type d&#8217;accès aux proriétés d&#8217;une entité: @Access(FIELD) pour spécifier un accès direct aux champs et @Access(PROPERTY) pour spécifier que l&#8217;accès doit se faire via le getter et le setter. Support en natif des collections de type primitifs, un peu [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;Expert Group de la <a href="http://jcp.org/en/jsr/detail?id=317">JSR 317</a> vient enfin de sortir un Early Draft pour le futur JPA 2.0.</p>
<p>Voici quelques unes des nouveautés que JPA 2.0 apporterait:<br />
<span id="more-25"></span></p>
<ul>
<li>Ajout d&rsquo;une annotation @Access qui permet de spécifier le type d&rsquo;accès aux proriétés d&rsquo;une entité: @Access(FIELD) pour spécifier un accès direct aux champs et @Access(PROPERTY) pour spécifier que l&rsquo;accès doit se faire via le getter et le setter.</li>
<li>Support en natif des collections de type primitifs, un peu à la manière de @CollectionOfElements d&rsquo;Hibernate via @ElmenetCollection. A noter que les types Embeddable sont supportés eux aussi.</li>
<li>Un support plus évolué et flexible pour les clés primaires composés, les clés étrangères composés, etc.</li>
<li>Un support plus évolué pour les Maps. Les clés et les valeurs d&rsquo;une Map peuvent dorénavant être de n&rsquo;importe quelle combinaison (Entity, Embeddable, type primitif).</li>
<li>Gestion plus sophistiqué de la concurrence et du locking</li>
<li>API pour controler le cache du second niveau</li>
<li>Extension de JPA-QL. Apparmment, les détails seront précisés dans un futur Draft.</li>
</ul>
<p>Bon, ce n&rsquo;est qu&rsquo;un survol très rapide des nouveautés. C&rsquo;est en partie dû au fait que je me suis basé sur le document officiel de l&rsquo;Early Draft, qui présente les specs de JPA 2.0 sans indiquer précisément/systématiquement ce qui a changé par apport à JPA 1.0.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wicket: Il est temps que je m&#8217;y mettes</title>
		<link>https://blog.developpez.com/djo-mos/p5193/java/jpa/wicket_il_est_temps_que_je_m_y_mettes</link>
		<comments>https://blog.developpez.com/djo-mos/p5193/java/jpa/wicket_il_est_temps_que_je_m_y_mettes#comments</comments>
		<pubDate>Sun, 02 Mar 2008 03:03:52 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[JPA]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Après quelques heures (éparpillés sur plusieurs semaines &#8230; boulot quand tu nous tiens ) passés à jouer avec Wicket qui se résument en documentation (surtout Wiki de Wicket) et la réalisations de quelques mini-applications (CRUD), je me suis décidé à passer à la vitesse supérieure en y accordant plus de temps et en essayant de réaliser une véritable application avec. &#60;leçon mode=&#160;&#187;donneur de leçon&#160;&#187;&#62; Peut importe la quantité de documents qu&#8217;on lit sur une techno, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après quelques heures (éparpillés sur plusieurs semaines &#8230; boulot quand tu nous tiens <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> ) passés à jouer avec Wicket qui se résument en documentation (surtout Wiki de Wicket) et la réalisations de quelques mini-applications (<em>CRUD</em>), je me suis décidé à passer à la vitesse supérieure en y accordant plus de temps et en essayant de réaliser une véritable application avec.</p>
<p><span id="more-99"></span></p>
<blockquote><p><strong>&lt;leçon mode=&nbsp;&raquo;donneur de leçon&nbsp;&raquo;&gt;</strong><br />
Peut importe la quantité de documents qu&rsquo;on lit sur une techno, la seule manière de la maitriser vraiment l&rsquo;utiliser à fond en développant une véritable application avec.<br />
<strong>&lt;/leçon&gt;</strong></p></blockquote>
<p>C&rsquo;est ainsi que j&rsquo;ai décidé de développer un blog avec Wicket, en m&rsquo;inspirant de <a href="http://blogs.bytecode.com.au/glen">Glen Smith</a> qui est un évangéliste Groovy/Grails et qui vient de finir le développement de son propre blog avec ce tandem.</p>
<p>En fait, j&rsquo;ai déjà pas mal avancé sur la chose ce WE, d&rsquo;ailleurs, il suffit de regarder l&rsquo;heure de création de ce billet pour s&rsquo;en convaince x)</p>
<p>Je profiterais aussi de cette occasion pour évaluer Netbeans, histoire de voir où ça en est après tout le <em>hype</em> (sans le sens péjoratif) dont il bénéficie. J&rsquo;ai joué un peu les derniers jours avec les derniers <em>snapshots</em> de Netbeans 6.1, mais finalement, je me suis contenté de la 6.0.1 (problèmes de stabilité, mais surtout d&rsquo;incompatibilité de plugins, notamment celui de Wicket).</p>
<p>Il faut noter qu&rsquo;à l&rsquo;occasion, j&rsquo;ai du me séparer de IcedTea (que je conseille vivement à tous les <em>linuxiens/Javaistes/nonNetbeansiens</em>) car je ne sais pour qu&rsquo;elle raison (elle marche parfaitement avec eclipse, Tomcat, etc.), elle ne fait pas bon ménage avec Netbeans.</p>
<p>J&rsquo;ai donc du installer la JDK de Sun à la place, et c&rsquo;est drôle, ça m&rsquo;a presque manqué: revoilà la vilaine OOME PermGenSpace :P, ainsi qu&rsquo;un autre vilain bug AWT/Swing sur Linux (Je suis sous Ubuntu Gutsy à la maison): des fenêtes blanches (vides) de temps en temps &#8230; </p>
<p>
Bon, le sujet de Netbeans/eclipse est trop explosif, mais j&rsquo;essaierais dans mes futurs billets de présenter objectivement mes retours d&rsquo;expérience, en espérant ne pas déclencher de flamewars.</p>
<p>
J&rsquo;essaierais aussi dans des futurs billets de présenter quelque unes de mes trouvailles, principalement au sujet de Wicket, mais aussi les autres technos que j&rsquo;utiliserais (Spring, JPA, Hibernate), peut être même distiller la chose en un article à la fin (Entre temps, j&rsquo;ai sur ma <em>TODO-List</em> la rédaction d&rsquo;un article sur la réalisation d&rsquo;une application CRUD avec Wicket et JPA).</p>
<p>D&rsquo;ici là, restez à l&rsquo;écoute &#8230; euh &#8230;à la lecture <img src="https://blog.developpez.com/djo-mos/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
