表映射的实体Bea.ppt_第1页
表映射的实体Bea.ppt_第2页
表映射的实体Bea.ppt_第3页
表映射的实体Bea.ppt_第4页
表映射的实体Bea.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容回顾,什么是EJB的注释? 如何在Bean中注入其他EJB ?实验步骤是怎样的? 如何在Bean中注入资源?实验有哪几个步骤?,第4讲 单表映射的实体Bean,4.1 实体Bean概述 4.2 创建单表映射的实体Bean 4.3 持久化相关注释,4.1 实体Bean概述,在EJB3.0中,实体Bean只是作为一个普通的JAVA对象,通过元数据将实体和数据库表之间建立起映射关系。 在EJB3.0中,客户端并不直接与实体Bean打交道,客户端对数据库的访问请求需要通过会话Bean或MDB,在会话Bean或MDB中通过实体Bean间接操作数据库。,4.2创建单表映射实体Bean,创建语法: 必须使用Entity定义实体Bean 实体Bean必须是可序列化的 每个实体Bean都必须有且仅有一个主键,主键既可以是基本类型,也可以是一个类。 每个实体Bean必须包含一个无参构造方法 根据需要映射的数据表结构声明成员变量,并为每个成员变量定义Getter和Setter方法,并在每个成员属性的Getter方法前面使用相应的注释进行设置 必须在应用的类路径下的META-INF目录下加入持久化配置文件persistence.xml,作为实体Bean在内存中的标识符,persistence.xml内容结构,实体Bean的创建及应用示例:,创建数据库并设置数据源 创建一个EJB3.0项目 创建实体Bean 在项目中的META-INF目录下创建persistence.xml 创建会话Bean 部署EJB3.0项目 创建一个Web项目及JSP文件 部署Web项目 启动服务器运行客户端JSP文件,假设数据表结构如下:,创建实体Bean:,主键注释必须放在主键的Getter方法前面,否则会影响其它成员属性的注释,使它们无效,最好重写hashCode()和equals(),创建会话Bean:,注入实体管理器,以实现实体Bean的创建、更新、删除和查询,创建JSP文件:,运行结果:,4.3持久化相关注释,javax.persistence.Entity 常用属性:name属性,用于指定实体Bean的名称,缺省时实体Bean的名称默认为Bean类名 示例: Entity(name=“person”) javax.persistence.Table 常用属性:name属性,指定映射表的名称,如果缺省Table注释,则默认采用实体名称作为映射表的名称 示例: Table(name=“person,javax.persistence.Id 指定实体Bean的主键 javax.persistence.GeneratedValue 指定主键值生成方式,需要与Id结合使用 generator属性:定义主键值生成器的名称。如果实体的主键值生成策略不是AUTO或IDENTITY,则需要提供SequenceGenerator或者TableGenerator注释,然后将generator属性值设置为注释的name属性值 strategy属性:指定字段值生成策略,它可取以下四种值: TABLE SEQUENCE IDENTITY AUTO,javax.persistence.Column 指定实体Bean的成员属性映射到数据表中的哪一个字段以及该字段的一些结构信息 name属性:指定成员属性映射到表中的哪个字段。如果不指定映射字段,则映射的字段名称和属性名称相同。 unique属性:指定字段是否唯一 length属性:用于定义字符型字段的最大字符长度 nullable属性:指定字段是否允许为空 示例: Column(name=“username”,length=20,nullable=false),javax.persistence.Temporal 指定java.util.Date或java.util.Calendar类型成员属性与数据库类型date或time或timestamp的映射 value属性:指定映射的数据库类型,可取以下三种值: TemporalType.DATE TemporalType.TIME TemporalType.TIMESTAMP 示例: Temporal(value=TemporalType.DATE),javax.persistence.PersistenceContext 用于动态注入EntityManager对象,从而可以通过EntityManager来实现对实体Bean的创建、更新、删除和查询。 注: EntityManager由容器自动管理和配置, 其主要负责将一组类映射到数据库中,(这组类 被称为持久化单元,持久化单元需要在 persistence.xml中定义) unitName属性:指定持久化单元名称 示例: PersistenceContext(unitName=“sise”),javax.persistence.Transient 指定成员属性不持久化。 示例: Transient Public String getFirstName().,javax.persistence.Lob 指定大文本数据。当属性的类型为byte、Byte或java.io.Serializble时,Lob注释将映射为数据库的Blob(二进制数据)类型;当属性为char、Character或java.lang.String时, Lob注释将映射为数据库的Clob(字符数据)类型 示例: Lob Public String getContent().,javax.persistence.Basic 用于对添加了Lob注释的大数据类型数据进行延时加载 FetchType属性:指定是否延时加载,默认为立即加载,取值包括:LAZY和EAGER,默认为EAGER 示例: Lob Basic(fetch=Fet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论