复习答案.txt
来自「Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,J」· 文本 代码 · 共 870 行 · 第 1/3 页
TXT
870 行
在执行dml时直接传一个对象进行增删改
在执行dql时直接返回一个对象,不用手动封装
什么时候用ibatis:
1、对性能要求很高,要有高度优化的sql时
2、没有提供整个表结果,提供了几个select语句
3、大量的业务写在存储过程中
ibatis的核心类
SqlMapClientBuilder:加载sqlmapclient.xml文件及具体的映射文件
SqlMapClient:相当于hibernate中的session,做数据的增删改查
Reader reader=Resources.getResourceAsReader("路径");
SqlMapClient smc=SqlMapClientBuilder.buildSqlMapClient(reader);
smc.queryforObject("命名空间.标签名",Object o);
smc.queryforList("命名空间.标签名",Object o);
smc.delete("命名空间.标签名",Object o);
smc.update("命名空间.标签名",Object o);
smc.insert("命名空间.标签名",Object o);
ibatis的核心配置文件是什么?
sqlmapclient.xml:说明数据库连接及具体o/r mapping
buy.xml:具体的o/r mapping说明
描述struts&spring&ibatis联合的配置文件如何实现?
si(spring ibatis)
dataSoruce:在sqlmapclient中去掉数据库连接的相关信息
sqlMapClient:SqlMapClientFactoryBean
configLocation
classpath:sqlmapclient.xml
/WEB-INF/sqlmapclient.xml
customerDao
dataSource
sqlMapClient
buyDao
dataSource
sqlMapClient
facade
buyDao
customerDao
transactionManager:DataSourceTransactionManager
abstractProxy:TransactionProxyFactoryBean abstract="true"
transactionManager
transacctionAttributes
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
facadeProxy:parent="abstractProxy"
target:facade
当前xml的解析方式有几种,各有什么特点,如何实现?
dom:document object model(文档对象模型)是树状,每一个节点是一个对象,
通过节点的方法与属性与外部的程序通信
解析时将整个xml文件加载到内存中形成一个dom树,可读,可随意跳转
可写
耗内存大,速度慢
dom的解析
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parser("文件");
sax:耗内存小,速度快
边读边解析,只读、只进,不可写
sax解析:
处理类:
public class MakeHandle extends DefaultHander
{
public void startDocument();
public void startElement();
public void endDocument();
public void endElement();
public void chararter();
}
解析:
SaxParserFactory spf=SaxParserFactory.newInstance();
SaxParser parser=spf.newParser();
parser.parse("xml路径",new MakeHandle());
dom的六大接口及重要方法
Document:文档本身
createElement()
createTextNode()
NodeList nl=getElementsByTagName("元素")
Node
Element
NodeList nl=getElementsByTagName("元素")
appendChild();
getAttribute("属性名")
setAttribute("属性名","值")
Text
getNodeValue();
NodeList
item(i)
getLength();
Attribute
如何生成一个dom对象并将其写到文件中?
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.newDocument("文件");
Element customer=doc.createElement("customer");
Element customerName=doc.createElement("customerName");
Text text=doc.createTextNode("张三");
customerName.appendChild(text);
customer.appendChild(customerName);
doc.appendChild(customer);
TransformerFactory tff=TransformerFactory.newInstance();
Transformer trformer=tff.newTransformer();
trformer.transformer(new DOMSource(doc),new ResultStream("c:\a.xml"));
ooad:
什么是模型?模型的原则?
模型是现实的浓缩
作用:
分析、认识未知的系统
模型便于决策
模型可以实现文档化、可视化,便于沟通
原则:
模型的好坏决定系统的成败
模型与现实越接近越说明它的正确性
模型不止一个,要多个
模型要根据不同层面的用户,提供不同细节说明。
九大图形(重重)
use-case:作需求
类:从需求到设计都是必须的。
时序:在详细设计阶段,验证系统的正确性,找方法、找类,与时间有关
协作:在详细设计阶段,说明类与类的交互,与时序图类似,但没有时间概念,
通过序号说时工作的先后顺序
活动:分析某一用例的流程,主要用在需求分析阶段
状态:一个对象在不同的方法下状态转换。
对象:对象名:类名+下划线
构建图:不同组件之间的依赖关系
部署图:与运行应用程序有关的主机之间的关系,找到系统运行的瓶颈。
类图的元素及关系?(重重)
元素:
类
接口
关系:
继承(实线+三角)
实现接口(虚线+三角)
依赖(虚线+箭头)
关联(实线+箭头)
聚集(实线+空心棱形)
合成(实线+实心棱形)
use-case的元素及关系?
元素:
用例
角色
系统边界
关系:
用例与用例:
包含: 必须调用
扩展:可用可不用
时序图的特点?:找类、找方法、验证系统的正确性
横轴:
时间
纵轴
对象
对象的生命周期
三级范式:
主键(projectID employeeID)
projectID projectName employeeID employeeName hours 职务 小时工资
完全依赖
projectID projectName
projectID employeeID hours
employeeID employeeName 职务 小时工资
不出现传递依赖
projectID projectName
projectID employeeID hours
employeeID employeeName 职务
职务 小时工资
e-r图设计的过程
找实体
拉关系
写属性
ooa与ood的区别
ooa:是面向客户找业务实体,客户可以看懂,分析员也可以看懂
ood:是对ooa分析得到的业务实体进一步的细化,是开发人员内部使用,是ooa的全集。
面向过程与面向对象的区别
面向对象:
在分析、设计、实现都是面向对象的与现实世界相统一所以可以降低复杂度、提高正确性。
重用性高:继承、业务实体变化不大
可扩展性高:接口
可维护性高:层与层之间通过接口通信
面向过程:
分析是对象实现是流程与现实世界不符,增大了难度,出现偏差的可能性较大。
重用性不高
扩展、维护性差
oracle:
oracle的体系结构
数据库(静态)
物理组件:
参数
控制
数据
日志
逻辑:
表空间
段
区
块
实例(动态)
进程
dbwr
lgwr
smon
pmon
ckpt
归档进程
内存
SGA
数据缓冲
日志
共享池
数据字典
pga:
一个用户一个
如何实现一个存储过程?如何实现一个函数?
create or replace procedure aa(a1 varchar2,a2 out varchar2,a3 in out varchar2)
is
begin
end;
create or replace function aa(a1 varchar2) return number
is
begin
return 1;
end;
oracle的触发器与sql-server的触发器的区别?
oracle:
before/after insert/delete/update
for each statement/row
新数据: :new
老数据: :old
sql-server:
之前之后不可选是由sql-server自己确定的
for each statement(只有语句级)
新数据inserted
老数据deleted
请描述联接、子查询、联合
联接:多个表列合了一起,会把one复制n-1份
左:左边所有的右边区配的
右:右边所有的左边区配的
select c.*,b.* from customer join buy b on c.customerName=b.customerName;
select c.*,b.* from customer , buy b where c.customerName=b.customerName;
子查询:查询套查询,子查询的结果是父查询的条件
select * from buy where customerName in(select customerName from customer);
联合:多个表的行合了一起
union
minus:前一个sql有后一个没有
intersect:交集
表分区的特点及优点?
特点:
逻辑是一张表,物理上没有存储一起。
优点:
速度快
备份快
一个分区出现故障与其它分区无关
如何声明、打开、遍历游标?
declare
cursor c1 is select * from customer;
cus customer%rowtype;
begin
open c1;
fetch c1 into cus;
while(c1%found) loop
dbms_output.put_line(cus.customerName||' '||cus.sex);
fetch c1 into cus;
end loop;
close c1;
end;
declare
type c_type is ref cursor;
c1 c_type;
begin
open c1 for select * from customer;
end;
如何实现一个包?
包声明
包主体
如何备份数据、恢复数据
在dom命令行中
exp system/system@aptech owner=scott file=scott1
imp system/system@aptech file=scott1 full=y ignore=y
imp system/system@aptech file=scott1 ignore=y fromuser= touser=
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?