views:

342

answers:

2
+1  Q: 

Using EclipseLink

I am still new to Java and Eclipse and I'm trying to get my application to connect to a database. I think I want to use EclipseLink, but all of the documentation on the matter assumes you already know everything there is to know about everything.

I keep getting linked back to this tutorial: http://www.vogella.de/articles/JavaPersistenceAPI/article.html

But it's basically useless because it doesn't tell you HOW to do anything. For the Installation section, it tells you to download EclipseLink and gives you a link to the download page, but doesn't tell you what to do with it after you download. The download page doesn't either. I used the "Install new software" option in Eclipse to install EclipseLink into Eclipse, but it gave me like 4 different options, none of which are explained anywhere. It gave me options JPA, MOXy, SDO, etc, but I don't know which one I need. I just installed them all. Everything on the web assumes you are already a Java guru and things that are second nature to Java devs are never explained, so it's very frustrating for someone trying to learn.

So how do I install and USE EclipseLink in my project and what do I need to do to connect it to a Microsoft SQL server? Again, I am new to all of this so I have no clue what to do. Thanks for the help.

+4  A: 

I don't think you need to just learn how to use EclipseLink. EclipseLink is a reference implementation for JPA. There are a number of tutorials on the web that you can read up about regarding JPA. I have written a series of articles for beginners for building web applications and one of the sections deals with JPA (and EclipseLink). If you are interested take a look and I welcome discussion on it to improve it as well as my own understanding.

EDIT: Here's a more direct answer to your question. I hope it helps

There are a number of different download approaches to take for EclipeLink. This is one way:

Download EclipseLink Installer

Extract the eclipselink.jar from the download jlib directory and include it in your projects classpath.

Download the ejb3-persistence.jar and include it in your projects classpath.

I haven't got SQL server myself but you would need to include the sqljdbc jar in your classpath. Don't know what version you are using or if it even matters but you can try this link and download the 1033\sqljdbc_3.0.1301.101_enu.tar.gz file. Extract it and copy the sqljdbc.jar into your projects classpath.

Here's a simple standalone example:

persistence.xml (saved in your META-INF directory in your src folder)

<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-unit name="escribs-pu" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <!-- haven't tested with SQL server so hope the below is correct -->
            <property name="eclipselink.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
            <property name="eclipselink.jdbc.url" value="jdbc:sqlserver://localhost;databaseName=MyDB" />
            <property name="eclipselink.jdbc.user" value="myusername" />
            <property name="eclipselink.jdbc.password" value="mypassword" />
        </properties>
    </persistence-unit>
</persistence>

Entity class:

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="person")
public class Person {
    private Long id;
    private String name;

    @Id
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}   

SimpleTest

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class SimpleTest {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("escribs-pu");

        Person person = new Person();
        person.setId(1L);
        person.setName("Clark");

        EntityManager em = null;
        EntityTransaction tx = null;
        try {
            em = emf.createEntityManager();
            tx = em.getTransaction();
            tx.begin();
            em.persist(person);
            tx.commit();

            System.out.println("Person id: " + person.getId());
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally {
            if (em != null && em.isOpen()) {
                em.close();
            }
        }
    }
}
Ross
I checked the link you provided and there was only one article tagged eclipselink, which contained no information whatsoever about my question. It doesn't explain how to install/configure EclipseLink, or how to use it. This article was aimed at people that already use Hibernate on Glassfish.
Ross Peoples
Thanks for taking the time to have a look. The link I sent you contained information on converting an existing application that uses Hibernate reference implementation to EclipseLink reference implementation. It contains a link to a working application you can download as well as links (including EclipseLink home page) to sites that show you how to configure it. It also has a link that redirects you back to the start of the tutorial where you should begin if you are unfamiliar with the technology. There is no quick fix for what you want to do. Try Googling JPA tutorials EclipseLink for more.
Ross
Here's a link that is probably more what you are looking for: http://www.eclipse.org/eclipselink/jpa.php
Ross
I edited my answer to show you a very simple standalone example. I hope this is what you are looking for
Ross
This is great. You really broke it down for me and I really appreciate you taking the time to lay it out like that. Thank you!
Ross Peoples
Thanks, I hope it works. Let me know if there are any problems
Ross
Why wouldn't they just include one of the persistence jars that comes with EclipseLink rather than using Hibernate's? EclipseLink 2.1.0 (the latest as of today) includes `javax.persistence_2.0.0.v201002051058.jar` for jpa2 or `javax.persistence_1.0.0.jar` for jpa1.
R. Bemrose
A: 

In addtion to being the JPA reference implementation, EclipseLink also offers:

EclipseLink MOXy

EclipseLink is a component for mapping Java objects (included JPA entities) to/from XML. It conforms to the JAXB 2.X (JSR-222) specifications with useful extensions such as: XPath based mapping, externalized metadata.

EclipseLink SDO

SDO stands for Service Data Objects (JSR-235, EclipseLink is the reference implementation). Data is represented as a DataObject with generic get/set methods (such as set("first-name", "Jane")). The metadata is normally provided as an XML schema, and there are several helpers for acting on the data including conversion to/from XML.

EclipseLink DBWS

Is used to create a Web Service as a means of accessing your relational data.

Blaise Doughan