读书人

JavaSE施用JPA简单案例

发布时间: 2012-10-06 17:34:01 作者: rapoo

JavaSE使用JPA简单案例:

JavaSE使用JPA简单案例:

?

使用的JPA提供者是openjpa.


首先,新建一个普通的Java工程;

?

然后,导入openjpa所需要的jar包、数据库的驱动类、javaee.jar

?

(因为包含javax.persistence.*的API),见下图:

?

JavaSE施用JPA简单案例

?

接着编写EntityBean:

?

package study.entity;import javax.persistence.Id;import java.io.Serializable;import javax.persistence.*;@SuppressWarnings("serial")@Entitypublic class Person implements Serializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
?

然后是编写DAO吧,其实我更喜欢称为Service:

?

package study.service;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import study.entity.Person;public class PersonManagerImpl implements PersonManager {@Overridepublic Person getPerson(int personId) {EntityManagerFactory emf = Persistence.createEntityManagerFactory("helloworld");EntityManager manager = emf.createEntityManager();Person person = manager.find(Person.class, personId);manager.close();emf.close();return person;}@Overridepublic void addPerson(Person person) {EntityManagerFactory emf = Persistence.createEntityManagerFactory("helloworld");EntityManager manager = emf.createEntityManager();manager.getTransaction().begin();manager.persist(person);manager.getTransaction().commit();manager.close();emf.close();}}

?

在src下新建一个META-INF目录,在该目录中新建一个persistence.xml文件:

?

<?xml version="1.0" encoding="UTF-8"?><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="helloworld" transaction-type="RESOURCE_LOCAL"><provider>             org.apache.openjpa.persistence.PersistenceProviderImpl         </provider><class>study.entity.Person</class><properties><property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost/firstjpa" /><property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" /><property name="openjpa.ConnectionUserName" value="root" /><property name="openjpa.ConnectionPassword" value="XXXXXX" /></properties></persistence-unit></persistence>

?因为使用的是 JAVASE,所以直接将连接信息,写在了文件中。如果是用EJB容器,则可以使用JNDI的方式。

?

?

?

最后,在数据库中新建相应的数据库、数据库的表

?

(如果是Hibernate的话,可以不用见表,OpenJpa暂时不明了,还是新建吧。)


JavaSE施用JPA简单案例

?

测试类(打错了,少了个t,写成Tes了?? ⊙⊙b汗):

package study.test;import study.entity.Person;import study.service.PersonManager;import study.service.PersonManagerImpl;public class Tes {public static void main(String[] args) {PersonManager manager = new PersonManagerImpl();Person person = new Person();person.setName("xiaolongfeixiang");manager.addPerson(person);Person person2 = manager.getPerson(1);System.out.println(person2.getName());}}
?

运行结果:

?


JavaSE施用JPA简单案例

1 楼 litao11046 2011-03-28 我在测试的时候出现这个错误:
org.apache.openjpa.persistence.ArgumentException: This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent 2 楼 litao11046 2011-03-28 请楼主指点迷津啊,配置和你的是一样的 3 楼 litao11046 2011-03-28 能不能把你的项目发给我啊,我的邮箱是litao11046@163.com 4 楼 卢水发 2011-11-30 感觉还行,学习一下。

读书人网 >软件架构设计

热点推荐