总结课程

引用

下载 commons-dbcp-1.4-bin.zip

   commons-pool-1.5.4.jar




事务隔离
JDBC支持的四种事务隔离级别
READ_COMMITTED
写事务执行时,不允许其他事务访问未提交数据
读事务执行时,允许写事务访问数据
READ_UNCOMMITTED
写事务执行时,允许其他事务访问未提交数据
读事务执行时,允许写事务访问数据
REPEATABLE_READ
写事务执行时,不允许其他事务访问未提交数据
读事务执行时,不允许写事务访问数据
SERIALIZABLE
所有的事务排队依次执行
con.setTransactionIsolation()
设置事务隔离
DatabaseMetadata.getDefaultTransactionIsolation();
默认隔离级别
DatabaseMetadata.supportsTransactionIsolationLevel(int level)
     是否支持指定隔离级别

事务锁定

悲观锁
认为肯定会发生数据访问冲突
访问数据时,将数据锁定,其他事务不能写数据
数据库实现悲观锁
oracle: select * from emp for update
乐观锁
认为不一定会发生数据访问冲突
在数据表中增加字段version
每次修改数据之前比较版本号,
如果版本修改冲突,由用户决定如何操作
编程实现
hibernate 内置乐观锁支持
批处理
Statement
在本地缓存sql语句
addBatch(sql)
执行一批语句
executeBatch()
PrepareStatement
pstmt.setString(1,"a")
addBatch()
pstmt.setString(1,"b")
addBatch()

分页查询
1, 可滚动的结果集
每页10条
定位到0,next()10次 第一页
定位到100,next()10次 第十页
2, 数据库扩展sql
oracle分页rownum
select * from
(select t.*, rownum r
   (select * from s_emp) t)
where r >=? and r<=?
mysql分页limit
select * from s_emp limit 20, 10
limit 起始行, 每页条数
        起始行从0开始   
        sqlserver分页top   
        select * from s_emp top 50
        取前50条数据,
        如果每页10条,滚动到第41条,取10条数据   
大对象
lob - large object
blob - byte
clob - charactor

SQL> create table gallery (
  2  id number(8) primary key,
  3  pic blob
  4  )
  5  /
blob - oracle中可保存4G数据
mysql -
blob - 255
tinyBlob - 64k
me..Blob - 16M
longBlob - 4G

自动主键的获取

insert into s_emp(name) value('asdf')
插入的数据主键id由数据库自动生成
获得刚插入的主键值
stmt.executeUpdate(sql);
ResultSet rs =
stmt.getGeneratedKeys();
rs.next();
int id = rs.getInt(1);
连接池
数据库操作必须使用连接池
DBCP apache
tomcat使用该连接池
proxool 性能更高
c3p0
hibernate中使用这两个连接池

你可能感兴趣的:(oracle,sql,tomcat,Hibernate,mysql)