J2SE环境下使用JPA

  JPA (Java Persistence API)的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不是使用私有供应商特有的API。因此开发人员只需使用供应商特有的API来获得JPA规范没有解决但应用程序中需要的功能。尽可能地使用JPA API,但是当需要供应商公开但是规范中没有提供的功能时,则使用供应商特有的API。
   JPA需要Provider来实现其功能,Hibernate就是JPA Provider中很强的一个.从功能上来说,JPA现在就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的JPA(Java Persistence API) 兼容认证。
   本文目的只在展示Hibernate提供的JPA如何在J2SE环境下的配置。

   Eclipse3.4 for j2se + Hibernate3.3

1.新建java项目,配置资源库
引入Hibernate3.3资源包,必须有:
  J2SE环境下使用JPA
此外当然还要jdbc库引入

2.在src目录下新建META-INF/persistence.xml文档
<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="testjpa" transaction-type="RESOURCE_LOCAL">   
    <class>org.hibernate.ejb.HibernatePersistence</class> 
    
    <!-- 实体类 可以不用配置,@Enty类会自动加入上下文中
    <class>com.fencheng.core.TradeType</class>
   -->

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>   
        <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/>   
        <property name="hibernate.connection.username" value="admin"/>   
        <property name="hibernate.connection.password" value="admin"/>   
        <property name="hibernate.connection.url" valuejdbc:jtds:sqlserver://localhost:1143/smart;user=admin;password=admin""/> 
        <property name="hibernate.show_sql" value="true"/>   
    </properties> 
   
</persistence-unit>   
</persistence>  



3.以上配置工作就完成了!下面开始测试下。
(1)建表
 CREATE 
    TABLE trantype 
    ( 
        trancode CHAR(6) COLLATE Chinese_PRC_CI_AS NOT NULL, 
        tranname CHAR(40) COLLATE Chinese_PRC_CI_AS, 
        CONSTRAINT PK_trantype PRIMARY KEY (trancode) 
    )

(2) 编写实体类,用jpa配置与表的映射关系
package com.fencheng.core;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="trantype")
public class TradeType {
	private String code;
	private String name;
	
	public TradeType(){}
	
	public TradeType(String code, String name) {
		this.code = code;
		this.name = name;
	}


	@Id
	@Column(name="trancode",unique=true, nullable=false)
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	
	@Column(name="tranname", length=40, nullable=false)
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}


(3)为了简单期间,俺们就不再写个DAO类了,直接在测试类里获得实体管理器,并只实现一个持久化动作
package com.fencheng.core;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class TestHibernate {
	private EntityManager em;
	private EntityManagerFactory emf;
	
	public TestHibernate(){
		emf = Persistence.createEntityManagerFactory("testjpa");
		em = emf.createEntityManager();
	}
	
	public void addType(TradeType type){
		em.getTransaction().begin();
		em.persist(type);
		em.getTransaction().commit();
	}
	
	
	public static void main(String[] args) {
		TestHibernate th = new TestHibernate();
		th.addType(new TradeType("001","blabla"));
    }

}



执行应用程序,数据成功插入数据库!

你可能感兴趣的:(java,Hibernate,jpa,配置管理,J2SE)