`

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)



请问如何解决呢?

相关推荐

    如何控制JPA的事务

    例如,在容器托管的EntityManager对象只能使用JTA管理事务,而在J2SE环境下只能使用RESOURCE_LOCAL管理事务。 JTA事务是容器级别的事务,能够支持分布式事务。使用JTA管理EntityManager事务时,需要注意以下几个...

    JPA核心知识总结

    在J2SE环境中,可以通过`Persistence.createEntityManagerFactory()`和`createEntityManager()`创建并使用;在EJB或Web容器中,可以使用`@PersistenceUnit`注解注入`EntityManagerFactory`。 2. **容器托管的实体...

    spring data jpa

    在本示例中,我们看到项目不需要J2EE环境,这意味着它不需要应用服务器,而是可以直接在Java标准版(J2SE)环境下运行。这通常意味着更小的依赖和更简单的部署流程。 **MySQL** 是一个广泛使用的开源关系型数据库...

    J2SE 和 J2EE api 帮助文档

    首先,J2SE,也被称为Java SE或现在的Java平台标准版,是Java的核心,提供了基础的编程环境和类库,用于开发桌面应用、服务器端应用和嵌入式系统。J2SE包括Java语言规范、Java虚拟机(JVM)、类库和开发工具。它的...

    JPA核心知识讲解

    * 在 J2SE 环境中获取 EntityManager * 在 EJB 容器中获取 EntityManager 容器托管的实体管理器: * 事务范围的 EntityManager * 可扩展的 EntityManager 事务范围的 EntityManager: * 使用 @...

    j2se.rar_j2EE api_j2se_j2se.c

    J2SE 是 Java 平台的核心部分,它为桌面应用和服务器端应用提供运行环境。J2SE 提供了丰富的类库,包括基础的 I/O、网络编程、多线程、图形用户界面(GUI)等,同时,它也是 J2EE 平台的基础,因为 J2EE 应用程序...

    J2SE6.0_CN.rar_j2se 6.0下载_j2se api chm 6.0_j2se6 a_j2se6 api_jav

    4. **改进的 JDBC 4.0**:JDBC 4.0 提供了自动连接管理、统一的异常处理以及对 Java Persistence API (JPA) 更好的支持,简化了数据库访问。 5. **动态代理**:J2SE 6.0 引入了 `java.lang.reflect.Proxy` 类,允许...

    jboss源代码 java源代码 j2se服务器源码

    6. **varia**: "varia"通常表示“各种各样的”,在这个目录下,可能包含了一些不常使用的或者特定场景下的组件或工具。 7. **remoting**: JBoss Remoting是JBoss提供的远程调用框架,支持多种协议,如HTTP、RMI、...

    J2EE J2SE文档

    6. **JPA(Java Persistence API)** 和 **Hibernate**:JPA是Java官方的持久化框架,而Hibernate是流行的第三方实现,用于对象关系映射,简化数据库操作。 7. **Web服务**:J2EE支持SOAP和RESTful两种类型的Web...

    J2EE.rar_j2se

    4. **Java Persistence API (JPA)**:JPA是用于管理关系数据库的对象/关系映射(ORM)框架,简化了Java应用与数据库之间的交互。 5. **Java Messaging Service (JMS)**:JMS提供了一种标准接口,用于在Java应用之间...

    J2SE和J2EE的开发API

    4. **国际化与本地化**:`java.text`和`java.util.Locale`为多语言环境提供了支持。 5. **反射**:`java.lang.reflect`允许在运行时检查类、接口、字段和方法的属性。 6. **集合框架**:`java.util`中的ArrayList...

    Java-Persistence-API-(JPA)-basic.ppt

    Java Persistence API (JPA) 是Java企业级应用中用于对象关系映射(ORM)的标准框架。ORM的主要目标是解决在关系数据库与面向对象编程之间的不匹配问题,使得...在J2SE和J2EE环境下都能使用,适应了不同场景的需求。

    J2EE API和J2SE API的文档打包下载

    J2EE API则专注于企业级应用的开发,提供了一整套服务和框架来处理分布式环境下的复杂问题,如: 1. **Servlet和JSP**:用于构建动态Web应用的技术,Servlet处理服务器端逻辑,JSP用于生成动态HTML内容。 2. **...

    J2se1.6,J2ee1.6 API集合

    3. **Java Persistence API (JPA) 1.0**:提供了一种统一的方式来管理和持久化对象,简化了ORM(对象关系映射)操作。 4. **Enterprise JavaBeans (EJB) 3.0**:大大简化了EJB的使用,引入了无状态会话bean和实体...

    java培训课件(j2se+j2ee)

    9. **Servlet Container** 和 **Application Server**:如Tomcat、Jetty或WebLogic,它们提供运行Java Web应用的环境。 10. **Web Services**:通过SOAP和RESTful API,Java允许应用之间进行远程通信。 这份"java...

    J2SE的项目:人事管理系统原工程

    - **JPA(Java Persistence API)**:尽管本项目未明确提及,但可以考虑使用JPA作为更高级的ORM框架,简化数据库操作。 ### 6. 测试与调试 - **JUnit**:单元测试框架,确保代码功能正确。 - **Debug工具**:如IDE...

    j2se和j2ee帮助文档

    Java SE是Java的核心部分,它提供了基础的类库和运行时环境,支持桌面应用、移动应用以及服务器端的开发。Java SE的关键组件包括Java虚拟机(JVM)、Java语言规范、Java核心类库等。其中,Java虚拟机使得Java代码...

    J2SE&J2EE基础知识+学习过程回顾+在校大学生 学习Java 知识技能 +学习经验

    Java是广泛使用的编程语言,分为J2SE(Java标准版)、J2EE(Java企业版)和J2ME(Java微型版)。J2SE是Java的基础,包括核心类库和虚拟机,是学习Java的基础。J2EE则面向企业级应用开发,提供了Web容器和EJB(Enterprise ...

    JDK、J2EE、J2SE、J2ME四个易混淆概念区分

    J2EE(Java 2 Enterprise Edition)是Java平台的企业版,它在J2SE的基础上增加了对分布式计算、企业级应用服务的支持,如Java Servlet、JavaServer Pages (JSP)、Java Persistence API (JPA)、Java Message Service ...

    TongWeb6.0应用开发手册.pdf

    ##### 5.6 在J2SE环境中使用JPA - **使用过程**: - 手动创建EntityManagerFactory。 - 通过EntityManagerFactory创建EntityManager。 - **示例**: - 创建实体类。 - 手动管理EntityManager的生命周期。 ####...

Global site tag (gtag.js) - Google Analytics