EJB3.0 实体bean 简析

直接切入正题:实体bean的注记:
1:@Entity 表明这是一个实体bean
2:@Table 注释的name 属性指定映射的数据表的名称
3:@Column 注释定义了映射到列的所有属性
       column的几个属性:name 指定映射的列名
                                        unique 是否唯一
                                        length 对于字符型列
                                        insertable 是否允许插入
                                        updateble 是否允许更新
                                        columnDefinition  定义建表时创建此列的DDL
                                        secondaryTable 从表名 不在主表上建立此列。属性定义在从表里的名字
4:@Id 指定表的主键。它有多种生成方式
      Table 容器指定用底层的数据表确保唯一
      sequence 使用数据库的identity列来确保唯一
      identity 使用数据库的identity 列来保证唯一
      auto 由容器挑选一个合适的方式来保证唯一
     none 容器不管理主键。有程序控制
 5:@GeneratedValue 表示定义了标识字段的生成方式
另外实体bean一定要继承serializable 接口。这是ejb的工作性质决定的。ejb 是通过scoket 网络流来实现分布式的所以需要序列化。
EntityManager 是由EJB容器自动地管理和配置的。不需要用户自己创建。它用来操作实体bean 在类中 不用显示的进行赋值。可以直接使用。因为实体bean 加载时,容器会通过注释@persistenceContext 动态注入 EntityManager对象 另注:properties 里可以指定 数据表的建立和销毁时间。
6:@PersistenceContext 的属性 unitName 可以指定不同的持久化内容。
下面介绍下 持久化实体管理器 EntityManager
顾名思义 就是用来对实体bean 进行操作的辅助类。他可以用来产生,删除持久化的实体bean,通过主键查找实体bean,也可以通过EJB3QL语言查找满足条件的实体bean。实体bean被EntityManager管理时,EntityManager跟踪实体bean的状态改变,EntityManager的获取通过@oersistenceContext 注释由EJB容器动态注入(某种程度说来说。他的使用比hibernate 还要方便些 ,而且使用方式和hibernate的session 差不多)
EntityManager 的 几个常用方法:
1:通过实体的主键(也就是唯一标识符)我们可以通过find()或者getReference()方法来获得Entity ,当数据库没有你查找的记录时,find 会返回null。而getReference 会抛出EntityNotFoundException异常。另外 getReference 方法不保证实体bean 已经初始化
2:添加 persist 方法 参数就是实体bean。调用改方法插入数据
3:更新 Merge 参数同样是 实体bean  因为实体bean 有2中状态。所以我决定用hibernate的说法来解释下。
 当 实体bean 是持久对象时候(你用find 查询出来。不em.clear 这时候的状态就是持久对象)其代码如下
Person person = em.find (Person.class,1);
person.setName("aaa");
em.merge(person);
当实体bean 不是持久对象 也就是游离对象。更多的时候应该是临时对象。其代码如下:
em.merge(person);
牢骚几句:不晓得sun怎么想的。持久化对象还要调用merge 方法。明显多余哈。而且merge 处理 临时对象时 貌似hibernate的 saveorupdate 方法有相同id的实例会更新。没有会自动插入数据
4:删除 Remove 删除实体bean
     删除的时候实体一定是持久对象。这也很好理解哈。数据库都没有。你删什么东西哈。
    如果级联关系 cascade = cascadeType.All 或者 cascadeType.Remove 时候 则级联删除所有的对象。
接下来是重头戏了。EJB3QL 查询语句 相当于hibernate的hql  。。。。。。明天再更新吧。睡觉去了。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值