Reputation: 913
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.
Upvotes: 17
Views: 27392
Reputation: 800
No one mentioned a way to install EclipseLink libraries with the help of Maven. If you have a Maven project and manage your dependencies with Maven you can simply add following dependency and EclipseLink libraries are going to be able for your use in your project:
<!-- https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.7.6</version>
</dependency>
You can find other versions of EclipseLink here. After you add and download Maven dependency, you can set up persistence.xml
as mentioned in the top-rated answer under this question and start working with the database.
Upvotes: 2
Reputation: 71
"So how do I install and USE EclipseLink in my project
Since none of the previous answers really answer the question "How do I add the jpa impl. libraries to eclipse", here's the answer (took me an hour to figure it out myself!):
download a JPA implementation, for example eclipselink-2.5.1.v20130918-f2b9fc5.zip and extract the implementation libs. For example: eclipselink.jar jpa/*.jar to a directory
In eclipse open window -> preferences. In preferences window open build path -> user libraries
In user libraries click on new, type "name jpa" => ok
click on jpa and click "add external jars ... and select all extracted impl libraries
After that you can complete vogella's tutorial.
To the admins: You might want to flag the previous comments as invalid/offtopic. Especially you don't put the jars to the project path, as you are about to create a NEW project. However, the question is too broad, too.
Upvotes: 7
Reputation: 149047
In addtion to being the JPA reference implementation, EclipseLink also offers:
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.
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.
Is used to create a Web Service as a means of accessing your relational data.
Upvotes: 0
Reputation: 3008
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();
}
}
}
}
Upvotes: 23