jdbc链接数据库并实现操作:
1、加载配置文件(如果数据库信息是写在配置文件中的话,不是必须步骤)
2、加载JDBC驱动
3、建立连接
4、创建JDBCStatements 对象
5、设置SQL语句的传入参数;
6、执行SQL语句并获得查询结果;
7、对查询结果进行转换处理并将处理结果返回ResultSet;
8、释放相关资源(关闭Connection,关闭Statement,关闭ResultSet);
JDBC中的Statement和PreparedStatement的区别:
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,preparedstatement支持批处理
4.使用PreparedStatement可以防止SQL注入,更具安全性
jdbc问题描述:
数据库连接频繁的开启和关闭本身就造成了资源的浪费,影响系统的性能。
解决问题:
数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题。通过连接池就可以反复利用已经建立的连接去访问数据库了。减少连接的开启和关闭的时间。
连接池
Connection的取得和开放是代价比较高的处理,解决这个问题的方法是连接池。连接池就是事先取得一定数量的Connection,程序执行处理的时候不是新建Connection,而是取得预先准备好的Connection的使用权。
Mybatis框架整体设计:
1、事务管理机制
事务管理机制对于ORM框架而言是不可缺少的一部分,事务管理机制的质量也是考量一个ORM框架是否优秀的一个标准。
2、连接池管理机制
由于创建一个数据库连接所占用的资源比较大,对于数据吞吐量大和访问量非常大的应用而言,连接池的设计就显得非常重要。
3、缓存机制
为了提高数据利用率和减小服务器和数据库的压力,MyBatis 会对于一些查询提供会话级别的数据缓存,会将对某一次查询,放置到SqlSession 中,在允许的时间间隔内,对于完全相同的查询,MyBatis会直接将缓存结果返回给用户,而不用再到数据库中查找。
4、SQL语句的配置方式
传统的MyBatis 配置SQL语句方式就是使用XML文件进行配置的,但是这种方式不能很好地支持面向接口编程的理念,为了支持面向接口的编程,MyBatis 引入了Mapper接口的概念,面向接口的引入,对使用注解来配置SQL语句成为可能,用户只需要在接口上添加必要的注解即可,不用再去配置XML文件了,但是,目前的MyBatis 只是对注解配置SQL语句提供了有限的支持,某些高级功能还是要依赖XML配置文件配置SQL 语句。
Mybatis连接数据库并实现操作:
首先加载mybatis的核心配置文件,第二部构建sqlSessionFactory工厂,第三部通过工厂实例开启一个SqlSession,最后使用SqlSession处理需求。在这里我们能发现,Mybatis的Sql语句并没有写在类中,而是通过String对象去userMapper文件中访问,类似于一个key-value对象,这边只传一个key,通过这个key去映射文件中取出value也就是具体的sql语句。这样做的好处,就方便我们进行对sql语句的修改,管理。
Mybatis一级缓存:
每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。
在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的结果极有可能完全相同,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。
为了解决这一问题,减少资源的浪费,MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。