EntityManager:seam新手必读(一)

    开始学习seam的时候,有两个问题:我会用Spring和Hibernate,但一点也不懂Seam 和EJB3的 EntityManager。我用了一些时间学习seam,但EntityManager 一直困扰我。
    同时我也有了一些小收获,愿意跟刚刚开始学习seam的朋友分享以下。别紧张,我不敢确信我写的东西都正确 ;).
    好了,关于EntityManager有何用处?它管理你的entities ;)。 那是一些简单的java对象,通过getters and setters具备一些属性。这些属性之一是id(一般是Long数据类型),并且这些class必须以@Entity注解(annotated )。在seam的源码中可以找到一大批这样的例子,例如booking例子。在seam中,一件很重要的事情就是,每个Entity都有一个 @Name 注解(annotation),这样,它们才能被注入到其他seam部件(component)中。
    假设我们有这样一个entity class,叫做"Entity"。其生命周期内包含以下功能:

EntityManager 提供了这些功能。首先,如何把EntityManager 引入我的代码?很简单:

@PersistenceContext
private  EntityManager em;    

    好了,我们看看一个Entity 进程如何产生:

Entity entity  =   new  Entity();    

    这很简单。现在,这entity 的状态是NEW/TRANSIENT 。这意味着一个entity已经存在于你的应用程序中,但并不具有id,也不存在于你的数据库中。

    由于我们要使它持久化(即它应被写入数据库),我们应把它的状态转换为MANAGED

em.persist(entity);    

    现在,此entity由EntityManager管理了。EntityManager控制entity写入数据库。这动作无须立刻发生,可能把你的entity放在cache,稍后写入数据库。你可以放心,写动作肯定会发生。

Ok, what about reading an existing entity from the database? Therefore we use:

好,如何从数据库中读出已存在的entity呢?这样:

Entity entity  =  em.find(Entity. class , Id);    

    每个entity 有一个id(我已经说过,多数情况下是Long数据类型),通过id你可存取entity。这是这里的第二个参数。第一个参数代表你要存取的Entity class的进程。find操作之后,entity的状态也是MANAGED

(待续)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值