2018-03-27随手记EJB中涉及到的概念

EJB(Enterprise JavaBean)

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。在EJB3.0推出以后,实体Bean被单独分了出来,形成了新的规范JPA

POJO(Plain Ordinary Java Object):

简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

O/R映射层:

O/R映射层是持久层的一个特例,它的数据模型是对象模型(Object),存储模型是关系模型(Relational),cmp和Hibernate是对象模型到关系模型之间转换的两种不同实现。

JDBC(Java DataBase Connectivity,java数据库连接):

是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。


内连接:

内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。

外连接:

外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。

全外连接(fullouter join/ full join)

左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。 全外连接不支持(+)这种写法。

示例:

SQL> select * from dave a full join bl b on a .id = b .id;

ID NAME ID NAM

---------- ---------- ---------- ----------

8 安庆

1 dave 1 dave

2 bl 2 bl

1 bl 1 dave

2 dave 2 bl

3 dba 3 big bird

4 sf-express 4 exc

5 dmm

9 怀宁

已选择9行。

SQL> select * from dave a full outer join bl b on a .id = b .id;

ID NAME ID NAME

---------- ---------- ---------- ----------

8 安庆

1 dave 1 dave

2 bl 2 bl

1 bl 1 dave

2 dave 2 bl

3 dba 3 big bird

4 sf-express 4 exc

5 dmm

9 怀宁

已选择9行。

左外连接(Left outer join/ left join)

left join是以左表的记录为基础的,示例中Dave可以看成左表,BL可以看成右表,它的结果集是Dave表中的数据,在加上Dave表和BL表匹配的数据。换句话说,左表(Dave)的记录将会全部表示出来,而右表(BL)只会显示符合搜索条件的记录。BL表记录不足的地方均为NULL。

示例:

SQL> select *from dave a left join bl b on a .id=b .id ;

ID NAME ID NAME

--------- ---------- ---------- ----------

1 bl 1 dave

1 dave 1 dave

2 dave 2 bl

2 bl 2 bl

3 dba 3 big bird

4 sf-express 4 exc

5 dmm -- 此处B表为null,因为没有匹配到

8 安庆 -- 此处B表为null,因为没有匹配到

SQL> select *from dave a left outer join bl b on a .id= b .id;

ID NAME ID NAME

---------- ---------- ---------- ----------

1 bl 1 dave

1 dave 1 dave

2 dave 2 bl

2 bl 2 bl

3 dba 3 big bird

4 sf-express 4 exc

5 dmm

8 安庆

用(+)来实现, 这个加号可以这样来理解:+ 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。

SQL> Select *from dave a,bl b where a .id=b .id(+); -- 注意: 用(+) 就要用关键字where

ID NAME ID NAME

---------- ---------- ---------- ----------

1 bl 1 dave

1 dave 1 dave

2 dave 2 bl

2 bl 2 bl

3 dba 3 big bird

4 sf-express 4 exc

5 dmm

8 安庆

右外连接(rightouter join/ right join)

和left join的结果刚好相反,是以右表(BL)为基础的, 显示BL表的所以记录,在加上Dave和BL 匹配的结果。Dave表不足的地方用NULL填充.

示例:

SQL>select * from dave a right join bl b on a .id = b .id;

ID NAME ID NAME

---------- ---------- ---------- ----------

1 dave 1 dave

2 bl 2 bl

1 bl 1 dave

2 dave 2 bl

3 dba 3 big bird

4 sf-express 4 exc

9 怀宁 --此处左表不足用Null填充

已选择7行。

SQL>select * from dave a right outer join bl b on a .id= b .id;

ID NAME ID NAME

---------- ---------- ---------- ----------

1 dave 1 dave

2 bl 2 bl

1 bl 1 dave

2 dave 2 bl

3 dba 3 big bird

4 sf-express 4 exc

9 怀宁 --此处左表不足用Null填充

已选择7行。

用(+)来实现, 这个+号可以这样来理解:+ 表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在左表,右表就是全部显示,故是右连接。

SQL> Select * from dave a,bl b where a .id(+)=b .id;

ID NAME ID NAME

---------- ---------- ---------- ----------

1 dave 1 dave

2 bl 2 bl

1 bl 1 dave

2 dave 2 bl

3 dba 3 big bird

4 sf-express 4 exc

9 怀宁

由于比较难理解,所以推荐看https://www.cnblogs.com/superAng/p/5607079.html,这个感觉比较直观

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 查询基础 算术运算符 (+)(-)(*)(/) 值得注意的是:/ 在oracle中就相当于显示中的除法 5/2 =...
    Autism_37a1阅读 3,349评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,796评论 19 139
  • 转载,觉得这篇写 SQLAlchemy Core,写得非常不错。不过后续他没写SQLAlchemy ORM... ...
    非梦nj阅读 10,833评论 1 14
  • 最终我还是去了哈密,不是外出旅行,也不是探望亲友,而是决定未来长达十多年的日子一直生活在那里。 这个城市不大,印象...
    生命的一万种可能阅读 1,157评论 0 1
  • 今天是全国高考日,高考从77年恢复已整整四十年了,四十年改变了多少人的命运,虽然中间有些不“和谐”的声音,说我们是...
    陆文读书阅读 1,644评论 0 0