<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>www.jugpadova.it: Tag persistence</title>
    <link>http://www.jugpadova.it/articles/tag/persistence</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Java User Group [Padova]</description>
    <item>
      <title>Un DAO in DUE minuti</title>
      <description>&lt;p&gt;&lt;a href="https://parancoe.dev.java.net"&gt;Parancoe&lt;/a&gt; è un framework Web pensato per scrivere rapidamente applicazioni Web &amp;#8220;di tutti i giorni&amp;#8221;, cioè applicazioni senza requisiti particolari, quelle che nel 90% dei casi viene richiesto di sviluppare. Lo scopo quindi non è avere un framework iper-flessibile, capace di adattarsi a tutti i requisiti possibili, ma un framework che renda &lt;em&gt;molto&lt;/em&gt; semplice la vita al programmatore sviluppando quel particolare tipo di applicazioni.&lt;/p&gt;

&lt;p&gt;Il suo modulo di persistenza segue la stessa filosofia e permette di ottenere in pochi minuti le classi per accedere ai dati (DAO - Data Access Object) dell&amp;#8217;applicazione, memorizzati in un database relazionale.&lt;/p&gt;

&lt;p&gt;Ad esempio, supponiamo di avere una classe persistente &lt;code&gt;Person&lt;/code&gt;, mappata sul DB mediante &lt;a href="http://www.hibernate.org"&gt;Hibernate&lt;/a&gt;. Per ottenere il suo DAO con Parancoe è sufficiente scriverne l&amp;#8217;interfaccia:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;@Dao(entity=Person.class)
public interface PersonDao extends GenericDao&amp;lt;Person, Long&amp;gt; {}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&amp;#8230;e scriverne una semplice configurazione per Spring:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;parancoe&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;dao&lt;/span&gt; &lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;personDao&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="attribute"&gt;interface&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;org.parancoe.example.dao.PersonDao&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Già così avete ottenuto un DAO con i seguenti metodi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Long create(Person newInstance);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Person read(Long id);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void update(Person transientObject);&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void delete(Person persistentObject);&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notate che non sono metodi &amp;#8220;generici&amp;#8221;, ma usano il tipo dell&amp;#8217;oggetto persistente, quindi non sono necessari cast.&lt;/p&gt;

&lt;p&gt;Ma si può andare oltre. Supponiamo che abbiate bisogno di un metodo per ottenere la lista delle persone con un determinato nome e cognome. Con &lt;a href="https://parancode.dev.java.net"&gt;Parancoe&lt;/a&gt; è sufficiente modificare l&amp;#8217;interfaccia, aggiungendo tale metodo:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;@Dao(entity=Person.class)
public interface PersonDao extends GenericDao&amp;lt;Person, Long&amp;gt; {
    List&amp;lt;Person&amp;gt; findByFirstNameAndLastName(
        String firstName, String lastName);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Questo è tutto: non è necessario scrivere l&amp;#8217;implementazione di tale metodo, nè modificare la configurazione del DAO.&lt;/p&gt;

&lt;p&gt;Per saperne di più leggete &lt;a href="http://wiki.java.net/bin/view/Projects/ParancoePersistenceTutorial"&gt;questo tutorial&lt;/a&gt; nel &lt;a href="http://wiki.java.net/bin/view/Projects/Parancoe"&gt;wiki&lt;/a&gt; del progetto.&lt;/p&gt;

&lt;p&gt;Se poi volete contribuire, anche solo per dare suggerimenti su come proseguire nello sviluppo, commentate questo articolo e visitate il sito del progetto:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://parancoe.dev.java.net"&gt;http://parancoe.dev.java.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Potete anche iscrivervi alle mailing-list del progetto:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://parancoe.dev.java.net/servlets/ProjectMailingListList"&gt;https://parancoe.dev.java.net/servlets/ProjectMailingListList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aggiornato 28/12/2006:&lt;/em&gt; è cambiato il modo di configurare i bean DAO.&lt;/p&gt;
</description>
      <pubDate>Sat, 09 Dec 2006 06:40:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8d98ed18-32b0-4934-83dc-88850497b5d1</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2006/12/09/un-dao-in-due-minuti</link>
      <category>Software</category>
      <category>Programmazione</category>
      <category>Parancoe</category>
      <category>persistence</category>
      <category>framework</category>
      <category>DAO</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/11508</trackback:ping>
    </item>
  </channel>
</rss>

