您的位置:首页 > 其它

EJB使用到的一些名词说明

2017-11-15 10:04 197 查看
BLL(Business Logic Layer) DAL(Data Access Layer) WEB(World Wide Web)

三层架构中,DAL(数据访问层)、BLL(业务逻辑层)、WEB层各司其职,意在职责分离。

EAO(Entity Access Object)

DAO(Data Access Object)全称为数据访问对象

EAO是基于DAO的,它分离了数据层、持久层、业务层和表达式。把实体作为对象进行传递。

EAO与DAO在本质上是相同的,只是传输的对象是不同的。EAO接口实现类中用Entity传递

JPA是Java Persistence API的简称,中文名Java持久层API

SessionBean messageBean EntityBean

@Stateless

@Stateful 有状态的会话bean在同一个类的实例访问的时候会保存上一次访问的状态

1.关键字上一个是StateFul。另一个是StateLess

2.无状态的SessionBean有以下好处

EJB容器无须为每个客户端分配一个EJB实例(对于有状态的Session Bean而言,系统必须为每个客户端分配一个EJB实例),可以减少创建、维护EJB实例的系统开销

EJB容器无须维护EJB的内部状态,系统开销大大降低。

3.有状态的SessionBean使用场景

客户端数量比较有限 ,当客户端数量巨大时,那就意味着EJB容器要同时为何大量有状态的EJB,这将导致EJB容器的性能直线下降。因此,只有当客户端数量比较固定时,才可以考虑使用有状态的SessionBean

客户端与服务端之间的会话比较多。


@Local 本地接口

@Remote 远程接口

当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除

当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。

当取值为Set Null时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

更新时属性,可能取值如上图为:默认(RESTRICT),RESTRICT,No ACTION,CASCADE,SET NULL属性。

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中

l unique属性表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@table标记中的@uniqueconstraint。

l nullable属性表示该字段是否可以为null值,默认为true。

l insertable属性表示在使用“insert”脚本插入数据时,是否需要插入该字段的值。

l updatable属性表示在使用“update”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。

l columndefinition属性表示创建表时,该字段创建的sql语句,一般用于通过entity生成表定义时使用。

l table属性表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。有关多个表的映射将在本章的5.6小节中详细讲述。

l length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。

l precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。

cascade属性的可能值有

all: 所有情况下均进行关联操作,即save-update和delete。

none: 所有情况下均不进行关联操作。这是默认值。

save-update: 在执行save/update/saveOrUpdate时进行关联操作。

delete: 在执行delete 时进行关联操作。

all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。

比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,

此book即成为孤儿节点。

CascadeType.PERSIST:级联新增(又称级联保存):对order对象保存时也对items里的对象也会保存。对应EntityManager的presist方法。

CascadeType.MERGE:级联合并(级联更新):若items属性修改了那么order对象保存时同时修改items里的对象。对应EntityManager的merge方法 。

CascadeType.REMOVE:级联删除:对order对象删除也对items里的对象也会删除。对应EntityManager的remove方法。

CascadeType.REFRESH:级联刷新:获取order对象里也同时也重新获取最新的items时的对象。对应EntityManager的refresh(object)方法有效。即会重新查询数据库里的最新数据。

CascadeType.ALL:以上四种都是。

级联指的是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作

// 如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中

// 如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。

// 但是,在session外,就不能再取了。用EAGER时,因为在内存里,所以在session外也可以取。

修改merge 添加persist 删除remove find(UserEntity.class, id)

save()

而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作

@Temporal(TemporalType.DATE)

1.日期:

@Temporal(TemporalType.DATE)

@Column(name = “applyDate”, nullable = false, length = 10)

public Date getApplyDate() {

return applyDate;

}

在页面端取值:2011-04-12

2.时间:

@Temporal(TemporalType.TIME)

在页面端取值:22:50:30

3.日期和时间(默认):

@Temporal(TemporalType.TIMESTAMP)

在页面端取值:2011-04-12 22:51:34.0

targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类;

因为一对多的实体集合时保存在集合类中,因此必须指明集合类中保存的具体类型

targetEntity:表示该属性关联的实体类型.该属性通常不必指定,ORM框架根据属性类型自动判

断targetEntity.

@JoinColumn注解中,name指的是连接表中的字段名,referencedColumnName指向本表字段名。

若不指定referencedColumnName,默认是与本表主键关联。

@JsonIgnore
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ejb