- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
JDBC的概念:doMaim对象(javaBean实体)
UserDao(DataAccessObject)
工厂模式,Factory消除UserDaoTest业务类对具体实现UserDaoJdbc类的依赖
读配置文件,通过工厂读配置文件来加载信息,具体实现类使用工厂来获取实现接口类的对象
JDBC的概念:工厂一般使用单例模式
工厂-->生产产品(Dao这个产品)
类加载器,不光可以load.class,还可以load其他的文件
事务概念与处理
1.原子性:不能拆分,组成事事务处理的语句形成一个逻辑处理单元,不能只执行其中的一部分一致性:事务做完之后,保定数据的完整性约束隔离性:一个事务处理对另一个事务处理的影响持续性:事务处理的结果能被永久保存下来
步骤:打开事务connection.setAutoCommit(false);
提交事务:connection.commit();
回滚事务:connection.rollback();
jdbc缺省是自动提交的,客户端连接也是自动提交的,要想打开事务,要把自动提交关掉
保存点:savePoint
Savepointsp=null
sp=conn.setSavepoint();
conn.rollback(sp);
-----------------------------------
JDBC的概念:跨多个数据库的事务JTA
JTA容器weblogic,websphere
分成两阶段提交。
用到JNDI服务器
javax.transaction.UserTransactiontx=
(UserTransaction)ctx.lookup("jndiName");
tx.begin();
//connection1connection2(可能来自不同的数据库)
tx.commit();//tx.rollback();
---------------------------------
事务的隔离级别:
connction.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
隔离级别
读未提交(Readuncommitted)可能出现脏读,不可重复读,幻读
读已提交(Readcommitted)可能出现不可重复读,幻读
可重复读(Repeatableread)可能出现幻读(幻影数据,执行插入一条数据,在另一个客户端有可能看到)
可串行化(Serializable)
隔离级别各个数据库的实现是不一样的。
--------------------------------------------------
关于存储过程(两层架构的时候用的很多)
三层架构的系统很少使用了。略过不看了先。
---------------------------------------------------
其他几个有用的API
jdbc3.0规范提供的方法
插一条记录,它能把主键返回来
PreparedStatement.getGeneratedKeys();
PreparedStatementps=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSetrs=st.getGeneratedKeys();
rs.getInt(1);
批量处理:可以大幅提升大量增删改的速度(并非绝对),与具体数据库有关,也不一定能提高性能
PreparedStatement.addBatch();
PreparedStatement.executeBatch();
-------------------------------------------------------------
可滚动结果集与分页特性
Statementst=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet.TYPE_SCROLL_SENSITIVE--对数据库敏感的,就是说,数据库中记录发生了变化,结果集会觉察到(但某些数据库不一定遵循这一规范,mysql就不遵循)
ResultSet.CONCUR_UPDATABLE--可更新的,就是说,改变结果集中的内容可以影响到数据库里
ResultSet.CONCUR_READ_ONLY--只读的,可滚动的结果集
Statementst=connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSetrs=st.executeQuery(sql);
rs.beforeFirst();
rs.afterLast();
rs.first();
rs.isFirst();
rs.last();
rs.isLast();
rs.absolute(9);
rs.moveToInsertRow();
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs.updateString("colname","newvalue");
rs.updateRow();|||
mysql分页例如:
selectid,name,money,birthdayfromuserlimit150,10;
从user表中第150条记录开始,取10条记录
---------------------------------------------------------
jdbc元数据信息数据库元数据信息、参数元数据信息
DatabaseMetaDatameta=connection.getMetaData();
通过DatabaseMetaData可以获得数据库相关的信息,如:
数据库版本,数据库名,数据库厂商信息,是否支持事务,是否支持某种事务隔离级别,
是否支持滚动结果集等。
ParameterMetaDatapmd=preparedStatement.getParameterMetaData();
通过ParameterMetaData可以获得参数信息.
ParameterMetaDatapmd=ps.getParameterMetaData();
intcount=pmd.getParameterCount();
System.out.println("count="+count);
for(inti=1;i
责编:罗莉
上一篇:浅析Swing客户端知识
下一篇:全面比较AWT和Swing
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>