`
zhouxingfu520
  • 浏览: 418330 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

简单JPA例子

 
阅读更多

使用jpa  jdk必需在1.5及以上

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

 

 

数据源文件配置  数据库采用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 {

	@BeforeClass
	public 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();
		}
	}
	
	
}
 

 

  • JPA.rar (5.2 MB)
  • 下载次数: 217
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics