1. 程式人生 > >使用JPA + Eclipselink操作PostgreSQL數據庫

使用JPA + Eclipselink操作PostgreSQL數據庫

SAP SCP SAP雲平臺 JPA EclipseLink

首先確保您已經安裝了PostgreSQL。您可以參考我這篇文章PostgreSQL掃盲教程。

使用Eclipse創建一個新的JPA project:

技術分享圖片

Platform選擇EclipseLink,作為JPA的provider之一。

技術分享圖片

在Eclipse裏自動生成的project如下圖所示:

技術分享圖片

用下列xml的內容覆蓋自動生成的xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
    <persistence-unit name="jerryjpa" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>jpatest.Person</class>
        <properties>
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>         
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>  
            <property name="javax.persistence.jdbc.user" value="postgres"/>  
            <property name="javax.persistence.jdbc.password" value="test_password"/> 
        </properties>
    </persistence-unit>
</persistence>

新建一個Java class:


package jpatest;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name = "T_PERSON")
@NamedQuery(name = "AllPersons", query = "select p from Person p")
public class Person {
    @Id
    @GeneratedValue
    private long id;
    @Basic
    private String firstName;
    @Basic
    private String lastName;

    public long getId() {
        return id;
    }

    public void setId(long newId) {
        this.id = newId;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String newFirstName) {
        this.firstName = newFirstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String newLastName) {
        this.lastName = newLastName;
    }
}

現在可以寫測試程序了:

package jpatest;

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

public class Test {
public static void main(String[] args) {

        String persistenceUnitName = "jerryjpa";  
        EntityManagerFactory factory = Persistence.createEntityManagerFactory(persistenceUnitName);  
        EntityManager entityManager = factory.createEntityManager();  
        EntityTransaction transaction = entityManager.getTransaction();  
        transaction.begin();  

        Person user = new Person();  
        user.setFirstName("Jerry_SAP");
        user.setLastName("Wang");
        entityManager.persist(user);  

        transaction.commit();  
        entityManager.close();  
        factory.close();  

        System.out.println("done");
    }
}

成功執行後,在PostgreSQL的Admin UI上能看到測試Java程序裏用JPA插入數據庫的記錄:

技術分享圖片

本文完整的源代碼和所需的庫文件可以在我的github上找到。

  • eclipselink-2.5.1.jar

  • javax.persistence-2.1.0.jar

  • postgresql-42.1.1.jar

技術分享圖片
要獲取更多Jerry的原創技術文章,請關註公眾號"汪子熙"或者掃描下面二維碼:

技術分享圖片

技術分享圖片

使用JPA + Eclipselink操作PostgreSQL數據庫