MFP Java适配器上的JPA

时间:2015-03-27 07:30:49

标签: java jpa ibm-mobilefirst

我在MFP 7.0中创建了一个Java适配器。适配器正在本地开发服务器(Liberty)上运行。由于我在文档中找不到任何引用,是否有可能在Java适配器中使用JPA来访问DB数据?

我需要在哪里放置persistence.xml? 我是否需要在Liberty配置文件server.xml上进行任何配置? 我在哪里需要放置DB驱动程序的库jar(EclipseLink)?

附上您将从Java适配器中找到代码:

@GET
public String performJPAQuery(){
    String result = null;

    Person marco = new Person();
    marco.setId(1);
    marco.setName("Marco");

    // connection details should be loaded from persistence.xml
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa-test");

    EntityManager em = emf.createEntityManager();

    EntityTransaction tx = em.getTransaction();

    tx.begin();

    em.persist(marco);

    tx.commit();

    // Querying the contents of the database using JPQL query
    Query q = em.createQuery("SELECT p FROM Person p");

    @SuppressWarnings("unchecked")
    List<Person> results = q.getResultList();

    logger.info("List of persons\n----------------");

    for (Person p : results) {
        logger.info(p.getName() + " (id=" + p.getId() + ")");
    }

    // Closing connection
    em.close();

    emf.close();

    return result;
}

这就是我的persistence.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="jpa-test" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>com.sample.Person</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" />
            <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:sample.db" />
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
        </properties>
    </persistence-unit>
</persistence>

1 个答案:

答案 0 :(得分:0)

这绝对是可能的。 persistence.xml文件的位置应如here所述。除此之外,您还必须:

  1. 使用连接using JNDI(在这种情况下,您不需要javax.persistence.jdbc.url参数)。
  2. javax.persistence.jdbc.url参数一起将用户凭据放入persistence.xml中的数据库(如果你选择谷歌这个选项,因为它取决于JPA / EclipseLink版本,但可能{{3}是一个好的开始)。
  3. 手动实例化一切,在这种情况下,您不需要persistence.xml文件。这个选项要复杂得多,但也更灵活。我用Hibernate做过一次,因此无法帮助你使用EclipseLink。