`

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资源包,必须有:
 
此外当然还要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"));
    }

}



执行应用程序,数据成功插入数据库!
分享到:
评论
1 楼 yinzisheng 2010-09-08  
楼主你好,按照你的这个写的会报一个错误:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named testjpa
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
	at com.yin.test.Test.main(Test.java:13)



请问如何解决呢?

相关推荐

    spring data jpa

    一个完整简单的spring data jpa例子程序,非j2ee环境,j2se环境,带jar包,直接解压,绝对可以直接运行,mysql数据库,只要把数据库连接设置好就行了。

    EJ Technologies JProfiler 11.0 x64.rar破解版

    软件介绍/下载地址/猜你喜欢/网友评论/JProfiler10破解版是一款非常好用且功能强大的Java开发分析工具,可以有效地查看java运行内存使用情况,并拥有JDBC、JPA和NOSQL数据库分析、内存泄漏分析等实用功能,它可以...

    Open JDK有3种实现的compact JRE,数字越大,功能越丰富.docx

    Java SE,前称J2SE。Java的标准版,为JavaEE和JavaME提供了基础类库以及能力。也是我们安装部署Java环境最基础的版本; Java EE,前称J2EE。针对企业级应用的加强版。主要涉及的技术:JDBC、EJB(被Spring遮住了...

    JAVA基础知识点HTML格式教程编程实例20000源代码

    实体二级表、实体更新、实体、注射、拦截、J2SE JBoss公司、JCA、JNDI、本地远程、管理、消息组件 开放式EJB(16)、持久性、资源、安全、购物车、有状态会企业组件 无状态会话企业组件、定时器、交易、Web服务、、 ...

    Java SE实践教程 源代码 下载

    Java SE实践教程 源代码 2010-9-...13.2.1 建立CVS的使用环境和基本操作 360 13.2.2 使用标记和分支 373 13.3 使用UML建模 376 13.3.1 对基本结构建模 376 13.3.2 对高级结构建模 381 13.4 小结 387 索引... 389

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    感谢大家的支持,我终于升级了,上传限制得到...13.2.1 建立CVS的使用环境和基本操作 360 13.2.2 使用标记和分支 373 13.3 使用UML建模 376 13.3.1 对基本结构建模 376 13.3.2 对高级结构建模 381 13.4 小结 387

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    感谢大家的支持,我终于升级了,上传限制得到...13.2.1 建立CVS的使用环境和基本操作 360 13.2.2 使用标记和分支 373 13.3 使用UML建模 376 13.3.1 对基本结构建模 376 13.3.2 对高级结构建模 381 13.4 小结 387

    有关jbpm的核心组件

    Jbpm由核心组件,web控制台,调度组件,BPEL扩展组件几大组件组成,核心组件是由纯java编写,所以能很好的和j2se程序,javaee程序结合。JBPM的持久层采用符合jpa标准的hibernate框架,身份组件用于管理用户。

    java必了解的六大问题

    java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习: *第一阶段:Java基础,包括java语法,面向...

Global site tag (gtag.js) - Google Analytics