Wednesday, April 04, 2007

How to build java presistence example with maven2

Here I will show how to build a very simple example that uses java persistence API. In order to simplify the build process I use maven 2. As the result, example archive is very short in size and all required libraries will be downloaded automatically only when it's really required.

1. Create new Java class, where you map java class/properties to database table/fields. Java persistence annotations will do this job for us:


import javax.persistence.*;

@Entity
@Table(name = "MESSAGES")
public class Message {

  @Id @GeneratedValue @Column(name = "MESSAGE_ID")
  private Long id;

  @Column(name = "MESSAGE_TEXT")
  private String text;

  @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "NEXT_MESSAGE_ID")
  private Message nextMessage;

  public Message() {}

  public Message(String text) {
    this.text = text;
  }

  // getter and setter methods for java properties
  ...
}


As you can see, "Message" class is mapped to "MESSAGES" table, "id", "text" and "nextMessage" properties - to "MESSAGE_ID", "MESSAGE_TEXT" and "NEXT_MESSAGE_ID" fields.

2. Now we can create simple program that uses persistent "Message" object:


import java.util.*;
import javax.persistence.*;

public class HelloWorld {

  public static void main(String[] args) {

    // Start EntityManagerFactory
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("helloworld");

    // First unit of work
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();

    Message message = new Message("Hello World with JPA");
    em.persist(message);

    tx.commit();
    em.close();

    // Second unit of work
    EntityManager newEm = emf.createEntityManager();
    EntityTransaction newTx = newEm.getTransaction();
    newTx.begin();

    List messages =
        newEm.createQuery("select m from Message m order by m.text asc").getResultList();

    System.out.println( messages.size() + " message(s) found:" );

    for (Object m : messages) {
      Message loadedMsg = (Message) m;
      System.out.println(loadedMsg.getText());
    }

    newTx.commit();
    newEm.close();

    // Shutting down the application
    emf.close();
  }

}


This example does not refer to any persistent framework directly. Instead, it uses symvolic names to get access to the framework in indirect way. In the abovementioned example we have "helloworld" name to refer to.

So, who is doing the persistence work here? We can use various frameworks here, but they should comply with java persistence API. For example, Hibernate or Toplink.

3. In this example we use Hibernate (http://hibernate.org) as persistence framework and hsqldb (http://hsqldb.org) as database. Let's take a look ad the hibernate configuration file (persistence.xml) where we describe "helloworld" factory:


<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
   http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">

  <!-- persistence.xml -->

  <persistence-unit name="helloworld">

    <!-- The provider only needs to be set if you use several JPA providers -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>
      <!-- Scan for annotated classes and Hibernate mapping XML files -->
      <property name="hibernate.archive.autodetection" value="class, hbm"/>

      <!-- SQL stdout logging -->
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="use_sql_comments" value="true"/>

      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

      <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
      <property name="hibernate.connection.url" value="jdbc:hsqldb:file:persistence-db/test"/>
      <property name="hibernate.connection.username" value="sa"/>
      <property name="hibernate.hbm2ddl.auto" value="create"/>

      <property name="hibernate.c3p0.min_size" value="5"/>
      <property name="hibernate.c3p0.max_size" value="20"/>
      <property name="hibernate.c3p0.timeout" value="300"/>
      <property name="hibernate.c3p0.max_statements" value="50"/>
      <property name="hibernate.c3p0.idle_test_period" value="3000"/>
    </properties>
  </persistence-unit>

</persistence>


This file should be located on your CLASSPATH within META-INF directory. "hibernate.hbm2ddl.auto" property will take care of creating database table automatically.

4. Maven 2 file is responsible of downloading all dependent libraries, building correct CLASSPATH for the project and running the example (we use "exec:java" plugin for it):


<?xml version="1.0" encoding="UTF-8"?>

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>persistence-deps</groupId>
  <artifactId>persistence-deps</artifactId>
  <version>1.0</version>

  <dependencies>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.0.4</version>
    </dependency>

    <dependency>
      <groupId>hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <version>1.8.0.7</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate</artifactId>
      <version>3.2.2.ga</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-annotations</artifactId>
      <version>3.2.1.ga</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.2.1.ga</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-tools</artifactId>
      <version>3.2.0.beta9a</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1</version>
    </dependency>
  </dependencies>

  <build>
    <defaultGoal>compile</defaultGoal>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>

        <configuration>
          <mainClass>hello.HelloWorld</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>scriptlandia-repo</id>
      <name>Scriptlandia Maven2 repository</name>
      <url>http://scriptlandia-repository.googlecode.com/svn/trunk/tools</url>
    </repository>
  </repositories>
</project>


5. Now, you can run compete example in one line:


>mvn compile exec:java


Complete example is located here.

27 comments:

Anonymous said...

Hi Trying to run your example.. But I get this error :

Unknown entity: zeuzgroup.core.example.Message


when it reaches the persist statement. Please say if you need more information to help me..

Anonymous said...

found problem, when testing with maven2 and junit (or just from eclipse) you need to explictly name your enitityes from persistance.xml like this

persistence-unit name="helloworld"
The provider only needs to be set if you use several JPA providers
provider org.hibernate.ejb.HibernatePersistence provider
class zeuzgroup.core.example.Message class


-Nino nino.martinez at jayway dot dk

ps had to strip all tags from < and >

Anonymous said...

too much, there's just too much, overwhelming.. If they could just provide a very good and simple Documentation

Dr Senior said...

When trying to run this example project in eclipse I had problems :

"No lifecycle phase binding can be found for goal: java,
specified as a part of the execution: defaultin plugin: org.codehaus.mojo:exec-maven-plugin......"

To get it to run, I had to remove :

execution tag which mentions java as its goal
from the org.codehaus.mojo section of the pom.xml

Anonymous said...

http://markonzo.edu Give somebody the to a site about the actual ashley furniture [url=http://jguru.com/guru/viewbio.jsp?EID=1536072]actual ashley furniture[/url], ywmquw, watch allegiant air [url=http://jguru.com/guru/viewbio.jsp?EID=1536075]watch allegiant air[/url], ivmbhrf, best pressure washers [url=http://jguru.com/guru/viewbio.jsp?EID=1536078]best pressure washers[/url], pfmoy, follow dishnetwork [url=http://jguru.com/guru/viewbio.jsp?EID=1536080]follow dishnetwork[/url], grgai, fresh adt security [url=http://jguru.com/guru/viewbio.jsp?EID=1536076]fresh adt security[/url], uxpnxf,

Anonymous said...

http://lumerkoz.edu Is it so important?, http://soundcloud.com/ativans ambs supercollege http://soundcloud.com/buy-allegra smicrosynth http://www.ecometro.com/Community/members/Buy-Tamoxifen.aspx lords http://rc8forum.com/members/Buy-Ezetimibe.aspx karmi http://www.lovespeaks.org/profiles/blogs/buy-famvir practicable

Anonymous said...

acomplia medicament [url=http://www1.chaffey.edu/news2/index.php?option=com_content&task=view&id=146&Itemid=63]what is acomplia [/url] acomplia drug information
http://www1.chaffey.edu/news2/index.php?option=com_content&task=view&id=146&Itemid=63

Anonymous said...

COURTNEY COX NUDE
[url=http://profiles.friendster.com/120698425]COURTNEY COX NUDE[/url]
COURTNEY COX NUDE
[url= http://profiles.friendster.com/120698425 ] COURTNEY COX NUDE [/url]
CINDY CRAWFORD NUDE
[url=http://profiles.friendster.com/120698467]CINDY CRAWFORD NUDE[/url]
CINDY CRAWFORD NUDE
[url= http://profiles.friendster.com/120698467 ] CINDY CRAWFORD NUDE [/url]
AMY SMART NUDE
[url=http://profiles.friendster.com/120698522]AMY SMART NUDE[/url]
AMY SMART NUDE
[url= http://profiles.friendster.com/120698522 ] AMY SMART NUDE [/url]
SARAH MICHELLE GELLAR NUDE
[url=http://profiles.friendster.com/120698555]SARAH MICHELLE GELLAR NUDE[/url]
SARAH MICHELLE GELLAR NUDE
[url= http://profiles.friendster.com/120698555 ] SARAH MICHELLE GELLAR NUDE [/url]
AMANDA BEARD NUDE
[url=http://profiles.friendster.com/120698638]AMANDA BEARD NUDE[/url]
AMANDA BEARD NUDE
[url= http://profiles.friendster.com/120698638 ] AMANDA BEARD NUDE [/url]

Anonymous said...

MAGGIE GYLLENHAAL NUDE
[url=http://profiles.friendster.com/120698657]MAGGIE GYLLENHAAL NUDE[/url]
MAGGIE GYLLENHAAL NUDE
[url= http://profiles.friendster.com/120698657 ] MAGGIE GYLLENHAAL NUDE [/url]
KATE WALSH NUDE
[url=http://profiles.friendster.com/120698891]KATE WALSH NUDE[/url]
KATE WALSH NUDE
[url= http://profiles.friendster.com/120698891 ] KATE WALSH NUDE [/url]
SOPHIE HOWARD NUDE
[url=http://profiles.friendster.com/120698910]SOPHIE HOWARD NUDE[/url]
SOPHIE HOWARD NUDE
[url= http://profiles.friendster.com/120698910 ] SOPHIE HOWARD NUDE [/url]
GRACE PARK NUDE
[url=http://profiles.friendster.com/120698929]GRACE PARK NUDE[/url]
GRACE PARK NUDE
[url= http://profiles.friendster.com/120698929 ] GRACE PARK NUDE [/url]
JENNY MCCARTHY NUDE
[url=http://profiles.friendster.com/120698970]JENNY MCCARTHY NUDE[/url]
JENNY MCCARTHY NUDE
[url= http://profiles.friendster.com/120698970 ] JENNY MCCARTHY NUDE [/url]

Anonymous said...

SOFIA VERGARA NUDE
[url=http://my.curse.com/members/KALLIE3.aspx]SOFIA VERGARA NUDE[/url]
SOFIA VERGARA NUDE
[url= http://my.curse.com/members/KALLIE3.aspx ] SOFIA VERGARA NUDE [/url]
GWYNETH PALTROW NUDE
[url=http://my.curse.com/members/KALYN4.aspx]GWYNETH PALTROW NUDE[/url]
GWYNETH PALTROW NUDE
[url= http://my.curse.com/members/KALYN4.aspx ] GWYNETH PALTROW NUDE [/url]
MANDY MOORE NUDE
[url=http://my.curse.com/members/KAMILAH7.aspx]MANDY MOORE NUDE[/url]
MANDY MOORE NUDE
[url= http://my.curse.com/members/KAMILAH7.aspx ] MANDY MOORE NUDE [/url]
MARCIA CROSS NUDE
[url=http://my.curse.com/members/KANDICE6.aspx]MARCIA CROSS NUDE[/url]
MARCIA CROSS NUDE
[url= http://my.curse.com/members/KANDICE6.aspx ] MARCIA CROSS NUDE [/url]
PAZ VEGA NUDE
[url=http://my.curse.com/members/KANDRA3.aspx]PAZ VEGA NUDE[/url]
PAZ VEGA NUDE
[url= http://my.curse.com/members/KANDRA3.aspx ] PAZ VEGA NUDE [/url]

Anonymous said...

PETRA NEMCOVA NUDE
[url=http://my.curse.com/members/KATHERIN3.aspx]PETRA NEMCOVA NUDE[/url]
PETRA NEMCOVA NUDE
[url= http://my.curse.com/members/KATHERIN3.aspx ] PETRA NEMCOVA NUDE [/url]
KIRSTEN DUNST NUDE
[url=http://my.curse.com/members/KATHERINE4.aspx]KIRSTEN DUNST NUDE[/url]
KIRSTEN DUNST NUDE
[url= http://my.curse.com/members/KATHERINE4.aspx ] KIRSTEN DUNST NUDE [/url]
SARAH SILVERMAN NUDE
[url=http://my.curse.com/members/KATHERYN4.aspx]SARAH SILVERMAN NUDE[/url]
SARAH SILVERMAN NUDE
[url= http://my.curse.com/members/KATHERYN4.aspx ] SARAH SILVERMAN NUDE [/url]
MONICA BELLUCCI NUDE
[url=http://my.curse.com/members/KATHI1.aspx]MONICA BELLUCCI NUDE[/url]
MONICA BELLUCCI NUDE
[url= http://my.curse.com/members/KATHI1.aspx ] MONICA BELLUCCI NUDE [/url]
KATE BECKINSALE NUDE
[url=http://my.curse.com/members/KATHLEEN5.aspx]KATE BECKINSALE NUDE[/url]
KATE BECKINSALE NUDE
[url= http://my.curse.com/members/KATHLEEN5.aspx ] KATE BECKINSALE NUDE [/url]

Anonymous said...

ELLEN DEGENERES GAY
[url=http://videoexclf1.vidiLife.com]ELLEN DEGENERES GAY[/url]
ELLEN DEGENERES GAY
[url= http://videoexclf1.vidiLife.com ] ELLEN DEGENERES GAY [/url]
SCARLETT JOHANSSON BUTT
[url=http://videoexclf7.vidiLife.com]SCARLETT JOHANSSON BUTT[/url]
SCARLETT JOHANSSON BUTT
[url= http://videoexclf7.vidiLife.com ] SCARLETT JOHANSSON BUTT [/url]
PAIGE DAVIS STRIPPING
[url=http://videoexclf8.vidiLife.com]PAIGE DAVIS STRIPPING[/url]
PAIGE DAVIS STRIPPING
[url= http://videoexclf8.vidiLife.com ] PAIGE DAVIS STRIPPING [/url]
STACY KEIBLER IN A BIKINI
[url=http://videoexclf9.vidiLife.com]STACY KEIBLER IN A BIKINI[/url]
STACY KEIBLER IN A BIKINI
[url= http://videoexclf9.vidiLife.com ] STACY KEIBLER IN A BIKINI [/url]
BREASTS CELEBRITIES
[url=http://videoexclf10.vidiLife.com]BREASTS CELEBRITIES[/url]
BREASTS CELEBRITIES
[url= http://videoexclf10.vidiLife.com ] BREASTS CELEBRITIES [/url]

Anonymous said...

LEIGHTON MEESTER NUDE
[url=http://www.projectopus.com/user/58591]LEIGHTON MEESTER NUDE[/url]
LEIGHTON MEESTER NUDE
[url= http://www.projectopus.com/user/58591 ] LEIGHTON MEESTER NUDE [/url]
KATE BOSWORTH NUDE
[url=http://www.projectopus.com/user/58593]KATE BOSWORTH NUDE[/url]
KATE BOSWORTH NUDE
[url= http://www.projectopus.com/user/58593 ] KATE BOSWORTH NUDE [/url]
AISHWARYA RAI BIKINI
[url=http://www.projectopus.com/user/58595]AISHWARYA RAI BIKINI[/url]
AISHWARYA RAI BIKINI
[url= http://www.projectopus.com/user/58595 ] AISHWARYA RAI BIKINI [/url]
RAVEN SYMONE BREAST
[url=http://www.projectopus.com/user/58597]RAVEN SYMONE BREAST[/url]
RAVEN SYMONE BREAST
[url= http://www.projectopus.com/user/58597 ] RAVEN SYMONE BREAST [/url]
ELISHA CUTHBERT NAKED
[url=http://www.projectopus.com/user/58599]ELISHA CUTHBERT NAKED[/url]
ELISHA CUTHBERT NAKED
[url= http://www.projectopus.com/user/58599 ] ELISHA CUTHBERT NAKED [/url]

Anonymous said...

SARAH PALIN PORN
[url=http://my.curse.com/members/LAVON4.aspx]SARAH PALIN PORN[/url]
SARAH PALIN PORN
[url= http://my.curse.com/members/LAVON4.aspx ] SARAH PALIN PORN [/url]
JENNIFER MORRISON NUDE
[url=http://my.curse.com/members/LAVONIA2.aspx]JENNIFER MORRISON NUDE[/url]
JENNIFER MORRISON NUDE
[url= http://my.curse.com/members/LAVONIA2.aspx ] JENNIFER MORRISON NUDE [/url]
JENNA JAMESON FUCKING
[url=http://my.curse.com/members/LAVONNE7.aspx]JENNA JAMESON FUCKING[/url]
JENNA JAMESON FUCKING
[url= http://my.curse.com/members/LAVONNE7.aspx ] JENNA JAMESON FUCKING [/url]
ADRIENNE BAILON NUDE PICS
[url=http://my.curse.com/members/LAWANNA.aspx]ADRIENNE BAILON NUDE PICS[/url]
ADRIENNE BAILON NUDE PICS
[url= http://my.curse.com/members/LAWANNA.aspx ] ADRIENNE BAILON NUDE PICS [/url]
MUJERES DESNUDA
[url=http://my.curse.com/members/LAWRENCE4.aspx]MUJERES DESNUDA[/url]
MUJERES DESNUDA
[url= http://my.curse.com/members/LAWRENCE4.aspx ] MUJERES DESNUDA [/url]

Anonymous said...

ROBBS CELEBRITY OOPS
[url=http://videoexclg36.vidiLife.com]ROBBS CELEBRITY OOPS[/url]
ROBBS CELEBRITY OOPS
[url= http://videoexclg36.vidiLife.com ] ROBBS CELEBRITY OOPS [/url]
CAMERON DIAZ NAKED
[url=http://videoexclg37.vidiLife.com]CAMERON DIAZ NAKED[/url]
CAMERON DIAZ NAKED
[url= http://videoexclg37.vidiLife.com ] CAMERON DIAZ NAKED [/url]
OLSEN TWINS NAKED
[url=http://videoexclg38.vidiLife.com]OLSEN TWINS NAKED[/url]
OLSEN TWINS NAKED
[url= http://videoexclg38.vidiLife.com ] OLSEN TWINS NAKED [/url]
CELEBRITY NUDITY DATABASE
[url=http://videoexclg39.vidiLife.com]CELEBRITY NUDITY DATABASE[/url]
CELEBRITY NUDITY DATABASE
[url= http://videoexclg39.vidiLife.com ] CELEBRITY NUDITY DATABASE [/url]
CELEBRITIES NUDITY
[url=http://videoexclg40.vidiLife.com]CELEBRITIES NUDITY[/url]
CELEBRITIES NUDITY
[url= http://videoexclg40.vidiLife.com ] CELEBRITIES NUDITY [/url]

Anonymous said...

In harry's existence, at some time, our inner fire goes out. It is then burst into zeal at near an contend with with another hominoid being. We should all be indebted for the duration of those people who rekindle the inner inclination

Anonymous said...

Sildenafil citrate, sold as Viagra, Revatio and beneath various other trade names, is a drug used to treat erectile dysfunction and pulmonary arterial hypertension (PAH). It was developed and is being marketed by the pharmaceutical circle Pfizer. It acts on inhibiting cGMP associated with phosphodiesterase type 5, an enzyme that regulates blood spout in the penis. Since becoming on tap in 1998, sildenafil has been the prime treatment quest of erectile dysfunction; its outstanding competitors on the customer base are tadalafil (Cialis) and vardenafil (Levitra).

Anonymous said...

[url=http://hoohi-mach.com/search/apocalypto+taringa.html]apocalypto taringa[/url]
[url=http://hoohi-mach.com/search/codesys+crack.html]codesys crack[/url]
[url=http://hoohi-mach.com/search/the.big.bang.theory.s01e08.hdtv.xvid+xor.html]the.big.bang.theory.s01e08.hdtv.xvid xor[/url]
[url=http://hoohi-mach.com/search/adelino+nascimento+grandes+sucessos.html]adelino nascimento grandes sucessos[/url]
[url=http://hoohi-mach.com/search/captain+vyom+hindi+tv+serial.html]captain vyom hindi tv serial[/url]
[url=http://hoohi-mach.com/search/driver+update+pro+edition.html]driver update pro edition[/url]
[url=http://hoohi-mach.com/search/twinbee+paradise.html]twinbee paradise[/url]
[url=http://hoohi-mach.com/search/ein+tierisches+trio+wieder+unterwegs.html]ein tierisches trio wieder unterwegs[/url]
[url=http://hoohi-mach.com/search/grunge+photoshop+brushes+by+heartdriven.html]grunge photoshop brushes by heartdriven[/url]
[url=http://hoohi-mach.com/search/mig33+kicker.html]mig33 kicker[/url]
[url=http://hoohi-mach.com/search/kilna+sawa.html]kilna sawa[/url]
[url=http://hoohi-mach.com/search/superior+drummer+midi+librarys.html]superior drummer midi librarys[/url]
[url=http://hoohi-mach.com/search/ex+girlfreands+porno.html]ex girlfreands porno[/url]
[url=http://hoohi-mach.com/search/fear+2+reborn+patch.html]fear 2 reborn patch[/url]
[url=http://hoohi-mach.com/search/video+free+gay+sex+mobile.html]video free gay sex mobile[/url]
[url=http://hoohi-mach.com/search/lana+bhini.html]lana bhini[/url]
[url=http://hoohi-mach.com/search/catherine+iorianni.html]catherine iorianni[/url]
[url=http://hoohi-mach.com/search/i+am+a+legend+dublado.html]i am a legend dublado[/url]
[url=http://hoohi-mach.com/search/spooks+s07e03.html]spooks s07e03[/url]
[url=http://hoohi-mach.com/search/drive+protection.html]drive protection[/url]
[url=http://hoohi-mach.com/search/bones+s04e26.html]bones s04e26[/url]
[url=http://hoohi-mach.com/search/chuck+1x07+dvd+dvb+spanish.html]chuck 1x07 dvd dvb spanish[/url]
[url=http://hoohi-mach.com/search/escape+mac.html]escape mac[/url]
[url=http://hoohi-mach.com/search/paty+cantu.html]paty cantu[/url]
[url=http://hoohi-mach.com/search/eclipse+gbm.html]eclipse gbm[/url]
[url=http://hoohi-mach.com/search/detective+parker.html]detective parker[/url]
[url=http://hoohi-mach.com/search/anime+ts.html]anime ts[/url]
[url=http://hoohi-mach.com/search/apple+osx.html]apple osx[/url]
[url=http://hoohi-mach.com/search/piano+teq+v2+3.html]piano teq v2 3[/url]
[url=http://hoohi-mach.com/search/garfiled+2.html]garfiled 2[/url]

bucksboy said...

Nice self contained simple example - thanks, Mark.

Invertir en oro said...

hello, i think that this post is the best that i have read.

4d ultrasounds said...

Thanks for putting this together! This is obviously one great post. Thanks for the valuable information and insights you have so provided here.

Namenda said...

I would love to write and say what a great job you did on this, as you have put a lot of work into it.Unfortunately, I'm not sure how to leave a comment....

Anonymous said...

Your luggage ended up a new extensively appealing alternative - beats headphones via grained natural leather weekenders along with towel monogram rug luggage for you to artwork dark-colored checkered baggage along with russet hued hand bags that will glistened the same as the meticulously old podium. In fact, if your demonstrate got just about any legend it turned out truly your to select from, monster beats a wonderful assemblage involving feathered cloches that will searched significantly more ground-breaking as opposed to outfits.

hosted virtual call center said...

Excellent blog! I truly love how it’s easy on my eyes as well as the info are well written. Great job!!

Anonymous said...

[url=http://dcxvssh.com]JZbiwVCqAkzL[/url] , odKammd , http://hhmgziigpu.com

Anonymous said...

Instant Payday Loans Online http://2applyforcash.com/ Pothelo [url=http://www.2applyforcash.com/]Payday Loans Online[/url] graxiakiz payday loans online online payday loan Many hours will be spent learning how the internet works, but it can be a lot of fun to working around compared to every other writer here.So, don’t you think people to earn take network to be an important tool for his business enterprise.Blogging tools are readily conveniently like that too.

Anonymous said...

http://www.markbattypublisher.com/jsp/buytramadol/#1003 high on tramadol 50mg - buy tramadol saturday delivery