您的位置:首页 > 其它

EJB——JPA持久化数据

2016-08-08 00:00 197 查看
        继续前面的学习,我们现在要将实体持久化到数据库中,首先认识JPA实体,如下是Bit实体:

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参数指向特有的持久化单元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  EJB