Transaction与SqlSession,Connection

简介: Transaction与SqlSession,Connection

Transaction与SqlSession,Connection 存在什么关系?他们为什么而存在?

回顾ConnectionTransactionSqlSession总结


回顾


JDBC

1. 注册驱动
 Class.forName("com.mysql.jdbc.Driver");
2.获取数据库连接
Connection conn  =DriverManager.getConnection(url,user,p);
3.创建向数据发送sql 的statement对象
Statement stmt = conn.CreateStatement();
4. 向数据库发送sql
ResultSet rs  = stmt.executeQuery(sql)//select语句
int updateaSum = stmt.executeUpdate(sql)//insert,update delete语句
5. 处理结果集
while(rs.next()){
    rs.getString(列名)
    rs.getInt(列名)
}
6. 关闭资源
rs.close();
stmt.close();
conn.close();


Connection

JDBC 是我们用来与数据库交互最基础的API。

Connection 作为一个特定数据库的会话,在一个连接的上下文中,sql语句被执行,然后结果被返回。

我们在一次Connection上下文中可以执行多个操作。

但是默认情况下,一个connection被创建时,默认是auto-commit模式,statement执行完sql后自动commit。这样,虽然多个操作在同一个Connection上下文中执行,他们自己只和自己有关系,但是他们之间没有什么关系。

如果我们想多个操作,同时成功或同时失败,那就要设置禁止auto-commit模式,然后手动commit 。 这样一次Connection 中的几个操作,就具有同时成功或者同时失败的关系。

Connection 隐藏的概念也就清晰可见:

  • 操作
  • 操作与操作之间的关系


Transaction


事务(Transaction) ,正是对N(N>=1)个操作执行时,同时成功或同时失败的关系的具象。

有操作,必定有事务。操作与事务相生相随

可以看出事务在Connection上的边界是Commit/rollback.


SqlSession


SqlSession 扮演什么角色呢?

我们对数据库的操作无非就是增上改查,Connection 中操作的概念主要体现在SQL上,select|insert|update|delete语句。

SqlSession是Mybatis 中定义的,用来表示与关系数据库的一次会话,会话定义了各种具体的操作,

查询、数据更新(包含保存、更新、删除)操作。而这些操作都在与数据库建立会话的基础上进行的

SqlSession 可以看作是对Connection 更加高级的抽象,从其方法上更加可以看出他具有更加明显的操作特征。

void select(String statement, ResultHandler handler);
  int insert(String statement, Object parameter);
  int update(String statement);
  int delete(String statement, Object parameter);


总结


  • Connection 是基础。
  • Transaction 是对多个操作,同时成功或同时失败的关系的具象化
  • SqlSession 是对Connection操作的高级封装。
  • Transaction ,SqlSession 都得依靠Connection
  • SqlSession ,Connection 的操作又伴随着Transaction


相关文章
|
1月前
|
SQL Java 数据库连接
|
1月前
|
缓存 安全 Java
Hibernate 中的 Session 是什么?
【8月更文挑战第21天】
12 0
|
4月前
|
SQL JavaScript 关系型数据库
connection.query()和 connection.execute()
connection.query()和 connection.execute()
37 0
|
4月前
|
SQL 缓存 Java
Hibernate - SessionFactory和Session详解
Hibernate - SessionFactory和Session详解
88 0
|
10月前
|
Java 关系型数据库 MySQL
定时任务Quzrtz:Failed to override connection auto commit/transaction isolation
定时任务Quzrtz:Failed to override connection auto commit/transaction isolation
100 0
|
Java 数据库连接 mybatis
Mybatis之Error building SqlSession.
Mybatis之Error building SqlSession.
473 0
|
Java 数据库连接 mybatis
MyBatis抛出You can't operate on a closed Connection!!!
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82796574 ...
1935 0