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资源包,必须有:
[img]http://dl.iteye.com/upload/picture/pic/49405/7ba5bf0a-dbbd-3e60-a34c-de0036fc8edb.png[/img]
此外当然还要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"));
}

}



执行应用程序,数据成功插入数据库!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值