EJB——JPA持久化数据
2016-08-08 00:00
197 查看
继续前面的学习,我们现在要将实体持久化到数据库中,首先认识JPA实体,如下是Bit实体:
@Entity注解表示Bid类是JPA实体。Bid是不需要业务接口的POJO,与会话bean和消息驱动bean不同。@Table注解通知JPA Bid实体映射到BIDS表。@Column注解表示字段,@Id注解使bidId属性成为实体主键。@GeneratedValue注解被设置为GenerationType.AUTO,表示实体保存到数据库中时,持久化提供器自动生成主键。
实体不能自己保存到数据库,JPA的EntityManager通过读取配置ORM配置执行一系列操作,并通过基于API的接口提供实体持久化服务。下面代码是PlaceBid EJB如何使用EntityManager API持久化Bid实体:
管理器读取Bid实体上的ORM映射注解,判断如何把实体保存到数据库中。通过@PersistenceContext注解把EntityManager注入到实体中。@ PersistenceContext注解的unitName参数指向特有的持久化单元。
package ejb3inaction.example.persistence;
import java.io.Serializable;
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity//是POJO成为实体
@Table(name = "BIDS")//指定表映射
public class Bid implements Serializable {
private Date bidDate;
private Long bidId;
private Double bidPrice;
private Long itemId;
private String bidderId;
public Bid() {
}
public Bid(String bidderId, Long itemId, Double bidPrice) {
this.itemId = itemId;
this.bidderId = bidderId;
this.bidPrice = bidPrice;
}
@Id//包含实体id
@GeneratedValue(strategy = GenerationType.AUTO)//自动生成id
@Column(name = "BID_ID")//指定列映射
public Long getBidId() {
return bidId;
}
@Column(name = "BID_DATE")
public Date getBidDate() {
return bidDate;
}
public void setBidDate(Date bidDate) {
this.bidDate = bidDate;
}
public void setBidId(Long bidId) {
this.bidId = bidId;
}
@Column(name = "BID_PRICE")
public Double getBidPrice() {
return bidPrice;
}
public void setBidPrice(Double bidPrice) {
this.bidPrice = bidPrice;
}
@Column(name = "BID_ITEM_ID")
public Long getItemId() {
return itemId;
}
public void setItemId(Long itemId) {
this.itemId = itemId;
}
@Column(name = "BID_BIDDER")
public String getBidderId() {
return bidderId;
}
public void setBidderId(String bidderId) {
this.bidderId = bidderId;
}
}
@Entity注解表示Bid类是JPA实体。Bid是不需要业务接口的POJO,与会话bean和消息驱动bean不同。@Table注解通知JPA Bid实体映射到BIDS表。@Column注解表示字段,@Id注解使bidId属性成为实体主键。@GeneratedValue注解被设置为GenerationType.AUTO,表示实体保存到数据库中时,持久化提供器自动生成主键。
实体不能自己保存到数据库,JPA的EntityManager通过读取配置ORM配置执行一系列操作,并通过基于API的接口提供实体持久化服务。下面代码是PlaceBid EJB如何使用EntityManager API持久化Bid实体:
package ejb3inaction.example.buslogic;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import ejb3inaction.example.persistence.Bid;
@Stateless(name = "PlaceBid")
public class PlaceBidBean implements PlaceBid {
//注入EntityManager实例
@PersistenceContext(unitName = "test")
private EntityManager em;
public PlaceBidBean() {
}
public Bid addBid(Bid bid) {
System.out.println("Adding bid, bidder ID=" + bid.getBidderId()
+ ", item ID=" + bid.getItemId() + ", bid amount="
+ bid.getBidPrice() + ".");
return save(bid);
}
private Bid save(Bid bid) {
//持久化实体实例
em.persist(bid);
System.out.println("Your bid your item id:" + bid.getItemId()
+ "was successful");
System.out.println("Your bid id is: " + bid.getBidId());
return bid;
}
}
管理器读取Bid实体上的ORM映射注解,判断如何把实体保存到数据库中。通过@PersistenceContext注解把EntityManager注入到实体中。@ PersistenceContext注解的unitName参数指向特有的持久化单元。
相关文章推荐
- 持久化框架数据持久化框架(JPA)及其具体实现
- 数据持久化框架(JPA)
- 理解JPA,第一部分:面向对象的数据持久化方案
- JPA保存数据时报持久化对象异常:PersistenceException: org.hibernate.PersistentObjectException
- JPA+Hibernate持久化数据:detached entity passed to persi
- 数据持久化框架(JPA)及其具体实现
- Jpa 本地方式实现数据的持久化【千锋出品】
- EJB3持久化规范(第三章)
- EJB3持久化规范(第五章)
- 用JavaBean数据组件集成JSF应用程序与EJB(5)
- 关于数据持久化的学习
- EJB笔记四 ——持久化实体管理器
- EJB 3.0持久化规范之实体类的要求
- NClay的数据持久化处理入门编
- 用JavaBean数据组件集成JSF应用程序与EJB(4)
- liferay数据类型持久化
- 使用NHibernate实现CSLA数据层的持久化
- 关于NetWeaver中数据持久化方式(www.mynetweaver.cn)
- 数据持久化关联对象加载构想
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?