读书人

容易JPA例子

发布时间: 2012-10-13 11:38:17 作者: rapoo

简单JPA例子

使用jpa? jdk必需在1.5及以上

数据源文件 必需放在src的META-INF文件夹下

?

容易JPA例子

?

数据源文件配置? 数据库采用oracle数据库

<?xml version="1.0" encoding="UTF-8"?><persistence version="1.0"xmlns:persistence="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 persistence_1_0.xsd "><persistence-unit name="leamJPA" transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><properties><property name="hibernate.show_sql" value="true" /><property name="hibernate.format_sql" value="false" /><property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" /><property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" /><property name="hibernate.connection.username" value="userName" /><property name="hibernate.connection.password" value="password" /><property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:orcl" /><property name="hibernate.max_fetch_depth" value="3" /><property name="hibernate.show_sql" value="true" /><property name="hibernate.hbm2ddl.auto" value="update" /></properties></persistence-unit></persistence>

?持久化对象类

@Entity@Table(name="tb_person")public class Person implements java.io.Serializable {private static final long serialVersionUID = 1L;        //必需要有id主键  指定PERSONSEQ序列@Id @Column(name="id") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="my_entity_seq_gen")@SequenceGenerator(name="my_entity_seq_gen", sequenceName="PERSONSEQ",allocationSize=1)private Integer id;@Column(name="name",length=30,nullable=false) private String name;@Column(name="addTime") public Person(){}/** * @return the jobtypeid */public Integer getId() {return id;}/** * @param jobtypeid the jobtypeid to set */public void setJId(Integer id) {this.id = id;}/** * @return the name */public String getName() {return name;}/** * @param name the name to set */public void setName(String name) {this.name = name;}

?

创建实体管理器获取数据源

?

public class JPAUtil {private static EntityManagerFactory emf;static{ emf=Persistence.createEntityManagerFactory("leamJPA");}public static EntityManager getEntityManager(){return emf.createEntityManager();}}

?

?

测试类 数据库不用建表? 会自动创建实体对象类对应的表结构

public class PersonTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Test//测试持久public void testSave(){EntityManager emf=JPAUtil.getEntityManager();try{EntityTransaction transaction=emf.getTransaction();transaction.begin();Person ps=new Person();ps.setAddTime(new Date());ps.setFlag(1);ps.setName("jpa测试");ps.setOpcode("admin");emf.persist(ps);transaction.commit();}finally{if(emf!=null)emf.close();}}@Test//测试更新public void testUpdate(){EntityManager emf=JPAUtil.getEntityManager();try{EntityTransaction transaction=emf.getTransaction();transaction.begin();Person ps=emf.getReference(Person.class, 2);ps.setAddTime(new Date());ps.setFlag(1);ps.setName("jpa测试更新222");ps.setOpcode("admin");emf.merge(ps);transaction.commit();}finally{if(emf!=null)emf.close();}}@Test//测试获取对象public void testGetPerson(){EntityManager emf=JPAUtil.getEntityManager();try{Person ps=emf.find(Person.class, 2);System.out.println(ps.getName());}finally{if(emf!=null)emf.close();}}@Test//测试获取多个对象public void testGetPersonList(){EntityManager emf=JPAUtil.getEntityManager();try{Query query=emf.createQuery("select p from Person p where id=:id");query.setParameter("id", 3);@SuppressWarnings("unchecked")List<Person> list=query.getResultList();for(Person p:list){System.out.println(p.getId());System.out.println(p.getName());}}finally{if(emf!=null)emf.close();}}@Test//测试删除public void testRemove(){EntityManager emf=JPAUtil.getEntityManager();try{EntityTransaction transaction=emf.getTransaction();transaction.begin();Person ps=emf.getReference(Person.class, 2);emf.remove(ps);transaction.commit();}finally{if(emf!=null)emf.close();}}}
?

?

读书人网 >编程

热点推荐