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  。。。。。。明天再更新吧。睡觉去了。
 

EJB学习笔记三(有状态和无状态SessionBean的区别)

1.前言 在EJB概述的博客中也曾提到过EJB3.0中的SessionBean的两种状态,下面呢,通过本篇博客深入的分析一下,两种状态的SessionBean到底有何区别。  2.开发一个有状...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年07月28日 16:22
  • 2389

Android自己动手打造XML解析框架

我们在工作中,经常会从服务器获取数据并进行解析,服务器返回的数据有两种:json和xml。json我们可以用gson或者fastjson等优秀的开源框架去进行解析,省去不少麻烦,通常我们只需要把bea...
  • nugongahou110
  • nugongahou110
  • 2015年07月20日 09:11
  • 10250

Java 算法 JSON Bean相互转化及JSON生成实体类

前言:之前解析JSON数据的时候使用的是GSON,相信大家已经非常熟悉,在封装开源控件的时候觉得GSON还是太重了而且别人在使用的时候不一定用这个解析框架,那就自己写一个解析的工具吧。 一、概述 ...
  • xuehuayous
  • xuehuayous
  • 2016年01月11日 11:26
  • 9445

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

EJB3.0 实体Bean(EntityBean) 作者:waitbin 2007-07-25 1.从EJB3.0开始,持久化已经自成规范,被称为java Persistence API; ...
  • gavin_ts
  • gavin_ts
  • 2012年05月23日 16:52
  • 488

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

相信很多同学(特别是新手朋友)编写
  • u014457181
  • u014457181
  • 2014年04月07日 02:26
  • 398

EJB3.0开发指南:实体Bean

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

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开发的便利性。但是你开...
  • dingji_ping
  • dingji_ping
  • 2016年08月25日 13:41
  • 531

EJB实体Bean与事物管理

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

EJB实体Bean学习

  • 2007年08月11日 13:47
  • 159KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EJB3.0 实体bean 简析
举报原因:
原因补充:

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