EJB3.0 实体bean 简析

原创 2007年10月06日 21:14:00
直接切入正题:实体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  。。。。。。明天再更新吧。睡觉去了。
 

相关文章推荐

【转载】EJB3.0实体Bean总结(EntityBean)

EJB3.0 实体Bean(EntityBean) 作者:waitbin 2007-07-25 1.从EJB3.0开始,持久化已经自成规范,被称为java Persistence API; ...

超快速编写ejb3.0的实体bean

相信很多同学(特别是新手朋友)编写

EJB3.0开发指南:实体Bean

EJB3.0开发指南:实体Bean 在EJB3.0中开发实体Bean非常简单,你可以象开发一般的java bean一样编程,只需做少量的注释。一个实体bean不需要实现Home接口或者Rem...

EJB 3.0学习之实体Bean

  • 2012年11月29日 15:03
  • 27KB
  • 下载

EJB 3.0中会话Bean,实体Bean,消息驱动Bean的作用和例子

EJB 3.0规范使开发EJB比过去更容易,可能诱惑你考虑开发第一个EJB。如果真是这种情况,那么祝贺你,你已经成功避免了在你以前EJB开发者的很多挫折,并且享受到EJB 3.0开发的便利性。但是你开...

EJB实体Bean与事物管理

  • 2016年11月24日 21:43
  • 27KB
  • 下载

EJB实体Bean学习

  • 2007年08月11日 13:47
  • 159KB
  • 下载

EJB 配置jboss 数据源 及 对数据库映射的实体Bean

一、在jboss\docs\examples\jca目录下有各种数据库的数据源配置模板文件,由于我用的是Mysql数据库,所以我找到 mysql-ds.xml ,对其进行修改(红色字体表示根据自己需求...

EJB--实体Bean

现在咱们说一下EJB中最后一个Bean,实体Bean,那么他是干什么用呢?和数据库打交道,既然说到了和数据库打交道,那就不得不说还有一个东东:POJO,什么事POJO:POJO的内在含义是指那些没有从...

EJB实体Bean与事物管理

一、jboss7.1.1配置mysql数据源 #1.到http://www.mysql.com/downloads/connector/j/下载MySQL的驱动包 #2.进入jboss-as-7.1...
  • NK_TF
  • NK_TF
  • 2016年11月24日 21:46
  • 384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EJB3.0 实体bean 简析
举报原因:
原因补充:

(最多只允许输入30个字)