JDBC和连接池0511.BasicDAO先来分析一个问题前面我们使用了Apache-DBUtils和Druid简化了JDBC开发,但仍存在以下不足:SQL语句是固定的,不能通过参数传入,通用性不好,需要进行改进,来更方便执行增删改查对于select操作,如果有返回值,返回类型还不确定,应该使用泛型将来如果表很多,业务需求复杂,不可能只靠一个Java来完成为了解决这些问题,就要引出BasicDAO的概念11.1BasicDao分析基本说明DAO,即dataaccessobject(数据访问对象)这样的通用类称为BasicDao,是专门和数据库进行交互的,即完成对数据库(表)的crud操作在Ba
WEB开发会话技术0414.Session生命周期14.1生命周期说明publicvoidsetMaxInactiveInterval(intinterval):设置session的超时时间(以秒为单位),超过指定的时长,session就会被销毁。值为正数的时候,设置session的超时时长。值为负数时,表示永不超时publicintgetMaxInactiveInterval()表示获取session的超时时间publicvoidinvalidate()表示让当前的session会话立即无效如果没有调用setMaxInactiveInterval(intinterval)来指定session
WEB开发会话技术0414.Session生命周期14.1生命周期说明publicvoidsetMaxInactiveInterval(intinterval):设置session的超时时间(以秒为单位),超过指定的时长,session就会被销毁。值为正数的时候,设置session的超时时长。值为负数时,表示永不超时publicintgetMaxInactiveInterval()表示获取session的超时时间publicvoidinvalidate()表示让当前的session会话立即无效如果没有调用setMaxInactiveInterval(intinterval)来指定session
JDBC和连接池04-210.数据库连接池10.5Apache-DBUtils10.5.1resultSet问题先分析一个问题在之前的程序中,执行sql语句后返回的结果集存在如下问题:关闭connection后,resultSet结果集无法使用如果要使用结果集,就不能关闭连接,不能关闭连接,就会反过来影响别的程序去连接数据库,就会对多并发程序造成很大的影响resultSet不利于数据的管理如果其它的方法或者程序想要使用结果集,也需要一直保持连接,影响其他程序对数据库的连接使用返回信息也不方便解决方法:定义一个类,该类的属性和表的字段是对应关系/映射关系,即用类的属性和表的字段(列)关联起来我们
JDBC和连接池04-210.数据库连接池10.5Apache-DBUtils10.5.1resultSet问题先分析一个问题在之前的程序中,执行sql语句后返回的结果集存在如下问题:关闭connection后,resultSet结果集无法使用如果要使用结果集,就不能关闭连接,不能关闭连接,就会反过来影响别的程序去连接数据库,就会对多并发程序造成很大的影响resultSet不利于数据的管理如果其它的方法或者程序想要使用结果集,也需要一直保持连接,影响其他程序对数据库的连接使用返回信息也不方便解决方法:定义一个类,该类的属性和表的字段是对应关系/映射关系,即用类的属性和表的字段(列)关联起来我们
JDBC和连接池023.ResultSet[结果集]基本介绍表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行,最初,光标位于第一行的之前next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来遍历结果集例子首先在数据库的actor表中添加两行数据INSERTINTOactorVALUES(NULL,'刘德华','男','1970-12-12','110'), (NULL,'jack','男','1990-11-11','112')packageli.jdb
JDBC和连接池023.ResultSet[结果集]基本介绍表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行,最初,光标位于第一行的之前next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在while循环中使用循环来遍历结果集例子首先在数据库的actor表中添加两行数据INSERTINTOactorVALUES(NULL,'刘德华','男','1970-12-12','110'), (NULL,'jack','男','1990-11-11','112')packageli.jdb
JDBC和连接池038.事务8.1事务介绍基本介绍JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要使用事务调用Connection的setAutoCommit(false)可以取消自动提交事务在所有的SQL语句都执行成功后,调用Connection的commit();方法提交事务在其中某个操作失败或者出现异常时,调用Connection的rollback();方法回滚事务8.2事务处理应用实例模拟经典的转账业务首先创建一张account
JDBC和连接池038.事务8.1事务介绍基本介绍JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要使用事务调用Connection的setAutoCommit(false)可以取消自动提交事务在所有的SQL语句都执行成功后,调用Connection的commit();方法提交事务在其中某个操作失败或者出现异常时,调用Connection的rollback();方法回滚事务8.2事务处理应用实例模拟经典的转账业务首先创建一张account
JDBC和连接池0410.数据库连接池10.1传统连接弊端分析传统获取Connection问题分析传统的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证IP地址,用户名和密码(约0.05s~1s时间)。需要数据库连接的时候,就向数据库要求一个,频繁地进行数据库连接操作将会占用很多的系统资源,容易造成服务器崩溃每一次数据库连接,使用完后都得断开,如果程序出现异常而未能关闭,将导致数据库内存泄漏,最终将导致重启数据库传统获取连接的方式,不能控制创建的连接数量,如连接过多,也可能导致内存泄漏,MySQL崩溃解决传统开发中