zoukankan      html  css  js  c++  java
  • 使用JPA + Eclipselink操作PostgreSQL数据库

    首先确保您已经安装了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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

  • 相关阅读:
    记录centos中pptpd server 的配置
    记录IIS7.5的rewrite配置
    duration异常导致的移动端音频无法播放问题
    移动端web开发的几个tips记录
    关于ie8中微软雅黑字体显示的问题
    移动端audio使用的一个注意事项
    关于window.opener的一个小记录
    【翻译】行高的相关计算
    spring 事务管理(编程式)
    CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全)
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/8997825.html
Copyright © 2011-2022 走看看