BBY学习札记第二篇

BBY学习笔记第二篇
BBY学习笔记第二篇

一、 JSP内置对象:
1. request
2. response
Response.sendRedirect(“index.jsp”);
3. session
第一个JSP页面装载时创建
getId();getAttribute();setAttribute();
4. application
服务器启动时产生,所有用户对应一个Application对象
getAttribute();setAttribute();
5. out
//cookie
Web服务器保存在客户端上的一段文本,比如用户SESSION的ID
Request.getCookie();response.addCookie();Cookie c = new Cookie(“hu”,”1011”);
c.setMaxAge(3600);
6.config
7.page
8.exception
9.pageContext
二、 存储过程
-- 建表
use test;
create table user(
id mediumint(8) unsigned not null auto_increment,
name char(15) not null default '',
pass char(32) not null default '',
note text not null,
primary key (id)
)engine=Innodb charset=utf8;
-- 示例一
delimiter //
create procedure proc_name (in parameter integer)
begin
if parameter=0 then
select * from user order by id asc;
else
select * from user order by id desc;
end if;
end;
//
delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);
-- 示例二
drop procedure proc_name;
delimiter //
create procedure proc_name (in parameter integer)
begin
declare variable varchar(20);
if parameter=1 then
set variable='Windows';
else
set variable='Linux';
end if;
select parameter;
end;
//
delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);
三、 mysql查看所有存储过程
查询数据库中的存储过程
方法一:
select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'
方法二:
show procedure status;
查看存储过程或函数的创建代码
show create procedure proc_name;
show create function func_name;
四、 O/R Mapping(ORM)
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
五、 Ibatis简介
相对于Hibernate和Apache OJB等“一站式”ORM解决方案而言,IBatis是一种“半自动化”的ORM实现。
这个框架将让你能够更好的在JAVA应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。另外还包括一些可能很有用的工具。
使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL语句,而ibatis则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的*空间。作为“全自动”ORM 实现的一种有益补充,ibatis的出现显 得别具意义。
六、 Oracle相应级别知识
一般用户
数据库基础知识、基本 SQL 语言。
一般系统管理员
SQL命令及DBA工具。
应用开发人员
熟练掌握 SQL、PL/SQL、存储过程、数据库触发器设计、了解Oracle DBA的原理、数据库原理知识、Client/Server开发工具、Oracle 选件产品开发、Oracle 插件产品开发、及其他应用系统开发工具的使用技巧。
数据库管理员
熟练掌握SQL、PL/SQL、Oracle数据库核心、DBA原理、数据库管理与日常维护、性能调整、Back-up & Recovery。
七、 Hibernate session方法
用Hibernate肯定会频繁的用到session,下面就将session中一些经常的用方法逐个的解释一下:
Transaction beginTransaction()
开始一个工作单元并返回一个与之相关Transaction对象,最为事务的开始,通常在需要对数据库进行更改例如save,update或delete时使用。在事务结束后需要调用Transaction的commit方法提交更改,该方法必须在session关闭之前使用。
void flush() void clear()
    这两个方法通常在一起使用。由于Hibernate有缓存数据的功能,所以当我们要批量查询和批量插入时,会因为大量的缓存而导致内存溢出。所以我们可以在执行批量插入时插入一定数目的数据后调用flush()提交插入,然后调用clear()清空当前session内的所有缓存。批量查询同理
Connection close()
    关闭session,同时清空所有的缓存。
Connection connection()
    获取当前session使用的JDBC connection。
boolean contains(Object object)
    返回boolean值,判断一个实例是否与当前session保持关联,即为持久化状态。
Query createQuery(String queryString)
    返回一个给定HQL语句的Query对象。
SQLQuery createSQLQuery(String queryString)
    返回一个用于执行原生SQL语句的SQLQuery对象
void delete(Object object)
    删除与该对象关联的数据里内的一条记录。该对象可以是处于持久化状态也可以是处于瞬态但与数据库的记录有id联系。如果该对象的cascade属性为delete或all将会同时删除相关联的数据。
void delete(String entityName, Object object)
    不太明白什么意思,占个位。
Connection disconnect()
    断开与session与当前JDBC的连接,如果连接有Hibernate管理,则将连接送回连接池,否则将送回给程序本身。
Object get(Class clazz, Serializable id)
    根据指定的实体类以及实体id返回一个实体的实例。如果找不到记录则返回null
Object get(String entityName, Serializable id)
    同上,entity为实体的名字
String getEntityName(Object object)
    返回一个持久化类的实体名
Serializable getIdentifier(Object object)
    返回一个被session缓存的实体实例的id
Query getNamedQuery(String queryName)
    返回一个在映射文件中定义的命名查询的query对象
SessionFactory getSessionFactory()
    获取生成当前session的SessionFactory
Transaction getTransaction()
    不说了,地球人都知道
Object load(Class theClass, Serializable id)
Object load(String entityName, Serializable id)
    和get方法一个效果,不同的是该方法在找不到对应记录时会抛出异常
Serializable save(Object object)
    将一个实体实例持久化,返回该持久化实例的id。在持久化之前必须手动或自动的指派id。
void update(Object object)
    通过给定的分离状态的实例的id更新数据库记录。如果在持久化类中有相同的id则会抛出异常。如果这个实例cascade设置为save-update或all是将同时更新所有关联的实例记录。
void saveOrUpdate(Object object)
保留,以后再写
八、 Oracle登录
sqlplus / as sysdba就可以了
也可以:
sqlplus sys/abc123@orcl as sysdba
或:sqlplus sys/abc123 as sysdba
要提醒的是 sys 账号一定要以sysdba身份登录
进入cmd
输入sqlplus sys/abc123 as sysdba
或者着 sqlplus system/abc123 as sysdba
sys和system的区别
sys是最大权限的用户,是数据库集群里面的最高管理员。
system是单个oracle实例的最高管理员
总体感觉就像是校长和班主任的关系,但是如如果你只安装了一个oracle实例没有集群的话就好比一个学校只有一个班一个校长和一个班主任。
九、 POJO定义

简单的Java对象(Plain Ordinary Java Objects)(Plain Old Java Object)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
十、 Servlet生命周期和CGI的区别
Servlet的生命周期分为5个阶段:
实例化:Servlet容器创建Servlet类的实例。
初始化:该容器调用init()方法,通常会申请资源。
服务:由容器调用service()方法,(也就是doGet()和doPost())。
破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。
不可用:释放内存的实例。
CGI(Common Gateway Interface通用网关接口)程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的,它对于客户端作出的每个请求,必须创建CGI程序的一个新实例,这样占用大量的内存资源。由此才引入了Servlet技术。
Servlet是一个用java编写的应用程序,在服务器上运行,处理请求信息并将其发送到客户端。对于客户端的请求,只需要创建Servlet的实例一次,因此节省了大量的内存资源。Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
十一、 启动PLSQL字符编码不一致
Database character set (AL32UTF8) and Client character set (ZHS16GBK) are different. Character set conversion may cause unexpected results. 
Note: you can set the client character set through the NLS_LANG environment variable or the NLS_LANG registry key in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0.
打开注册表,通过命令regedit。
如果不能修改注册表:
通过组策略解锁,点开始---运行---输入gpedit.msc
回车,依次展开‘用户配置-----管理模版-----系统’,双击右侧窗口中的‘阻止访问注册表编辑工具’,在弹出的窗口中选择‘已禁用’,‘确定’后退出组策略即可修改注册表。
找到到文中提示的路径,发现NLS_LANG键的值为:
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8即可。







小知识:
1、linux下压缩zip文件
zip –r qq.zip qq/*
2、eclipse生成函数注释
/** 回车或alt+shift+j;代码注释ctrl+shift+c