JDBC事务控制
1.什么是事务:一个包含多个步骤或者业务操作。如果这个业务或者多个步骤被 事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割
2.操作
开启事务: start transaction
提示事务: commit
回滚事务: rollback
3.在jdbc中Connection对象来管理事务
开启事务:setAutoCommit(boolean autoCommit);执行该方法里面传入false值,手动开启事务。在所有sql语句执行之前开启事务。
提交事务:commit();当所有的sql语句执行完毕提交事务
回滚事务:rollback();当事务中发生异常时回滚事务,回滚事务放在catch语句
连接池
1.什么是连接池:其实就是一个容器,在这个容器当中存放多个连接对象。
当系统开始运行时,可以让系统提前创建多个连接对象,放到容器中(连接池中),当客户端需要连接对象时,可以从连接池中申请一个连接,去访问数据库,当该连接使用完毕时,不再释放掉,归还给系统而是把这个连接对象归还给这个连接池
好处:
1.可以大大节省系统开销,
2.可以提高访问的速度
3.实现操作
javax.sql连接池
JNDI ----> Java Naming and Directory Interface Java 命名和目录接口
是JavaEE规范中的重要规范之一。是EJB相关的一些知识
使用JNDI降低程序和数据库的耦合度,使你的程序更加方便配置和维护以及部署
DataSource接口 它里面并不提供具体的实现,而是由驱动程序供应商(数据库厂商)提供
1.c3p0:()它是数据库连接池的一套技术
2.druid:它也是一套数据库连接池的技术,由阿里巴巴提供的。
4.C3P0 : 数据库连接池技术
步骤:
1.去官网下载两个jar包
分别是c3p0 和 mchange-commons
植入 工程的classpath类路径下,不要忘记导入mysql驱动jar包 mysql-connector-java -jar
定义配置文件:
文件的类型:c3p0.properties或者c3p0-config.xml
路径:放到classpath类路径下 对于工程来说直接放到src下面就可以了
获取DataSource对象 : 数据库连接池对象 通过实例化combopooledDataSource来获取
从连接池中获取连接。getConnection()
,创建配置文件
c3p0配置文件
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/student?characterEncoding=utf8</property>
<property name="user">数据库账号</property>
<property name="password">数据库密码</property>
<property name="maxPoolSize">最大量</property>
<property name="minPoolSize">最小量</property>
<property name="initialPoolSize">初始量</property>
<property name="checkoutTimeout">最大等待时间</property>
</default-config>
</c3p0-config>
//德鲁伊的配置文件
# 键值对形式 键和值用 = 连接
# 连接数据库的四大组件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///student?characterEncoding=utf8
username=root
password=666666
#初始化池子的连接数量
itialSize=10
#最大池子连接数量
maxActive=50
#最长等待时间
maxWait=3000
c3p0和德鲁伊获取连接的方式
前提是配置文件和properties文件配置好
c3p0
DataSource POOL = new ComboPooledDataSource();
Connection connection = pool.getConnection();
德鲁伊的
Properties properties = new Properties();
InputStream is = DruidDemo02.class.getClassLoader().getResourceAsStream("druid.properties");
DataSource createDataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = createDataSource.getConnection();