JAVA中常见数据库操作API

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这篇文章仅用于补充:JAVA代码审计的一些Tips(附脚本)一文中关于SQLi中不足部分

JDBC常用API

DriverManager:用于管理JDBC驱动的服务类。主要功能是获取Connection对象

public static Connection getConnection(String url, String user, String password) throws SQLException

//该方法获得url对应数据库的连接

Connection:代表数据库连接对象。每一个Connection代表一个物理连接会话

Statement createStatement() throws SQLException;

//该方法返回一个Statement对象

PreparedStatement prepareStatement(String sql)throws SQLException;

//该方法返回预编译的Statement对象,即将SQL语句提交到数据库进行预编译

CallableStatement prepareCall(String sql) throws SQLException;

//该方法返回CallableStatement对象,该对象用于调用存储过程

// 控制事务的相关方法

Savepoint setSavepoint() throws SQLException

//创建一个保存点

Savepoint setSavepoint(String name) throws SQLException;

//以指定名字来创建一个保存点;

void setTransactionIsolation(int level) throws SQLException;

//设置事务的隔离级别;

void rollback() throws SQLException;

//回滚事务;

void rollback(Savepoint savepoint) throws SQLException;

//将事务回滚到指定的保存点;

void setAutoCommit(boolean autoCommit) throws SQLException;

//关闭自动提交,打开事务;

void commit() throws SQLException;

//提交事务;

Statement:用于执行SQL语句的工具接口。该对象既可以执行DDL,DCL语句,也可以执行DML语句,还可以用于执行SQL查询

ResultSet executeQuery(String sql) throws SQLException;

//该方法用于执行查询语句,并返回查询结果对应ResultSet对象。该方法只能用于执行查询语句

int executeUpdate(String sql) throws SQLException;

//该方法用于执行DML语句,并返回受影响的行数;该方法也可用于执行DDL语句,执行DDL语句将返回0

boolean execute(String sql) throws SQLException;

//改方法可以执行任何sql语句。如果执行后第一个结果为ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false PreparedStatement:预编译的Statement对象,它允许数据库预编译sql语句,以后每次只改变sql命令的参数,避免数据库每次都需要编译sql语句,无需再传入sql语句,它比Statement多了以下方法

void setXxx(int parameterIndex, Xxx value):

//该方法根据传入参数值的类型不同,需要使用不同的方法。传入的值根据索引传给sql语句中指定位置的参数

Hibernate框架常用API

Configuration:负责Hibernate的配置信息。包括运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等和持久化类与数据表的映射关系(*.hbm.xml文件)

//属性文件(hibernate.properties):

Configuration cfg = new Configuration();

//Xml文件(hibernate.cfg.xml)

Configuration cfg = new Configuration().configure();

SessionFactory:Configuration对象根据当前的配置信息生成SessionFactory对象,SessionFactory对象中保存了当前数据库的配置信息和所有映射关系以及预定义的SQL语句,同时还负责维护Hibernate的二级缓存

SessionFactory configuration.buildSessionFactory()

获取SessionFactory对象

Session sessionFactory.openSession()

获取Session对象

Session:是应用程序与数据库之间交互操作的单线程对象。session对象有一个一级缓存,显式执行flush之前,所有的持久层操作的数据都缓存在session对象处。相当于JDBC的Connection

//获取持久化对象方法分为get()和load()

public Object get(Class clazz, Serializable id);

//通过持久化类和主键获取对象

public Object get(Class clazz, Serializable id, LockOptions lockOptions);

//通过持久化类和主键、锁选项获取对象

public Object get(String entityName, Serializable id);

//通过全类名+主键获取对象

public Object get(String entityName, Serializable id, LockOptions lockOptions);

//通过全类名+主键+锁选项获取对象

//load()方法与get()相同,但多了下列方法

public void load(Object object, Serializable id);

//通过一个空的持久化类的实例+主键获取对象

//get方法会在调用之后立即向数据库发出sql语句(不考虑缓存的情况下),返回持久化对象;

//而load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句.

//查询数据库中不存在的数据时,get方法返回null,load方法抛出异常:org.hibernate.ObjectNotFoundException

Serializable save(Object object)

//保存持久化对象

void update(Object object)

//更新持久化对象

void delete(Object object)

//删除持久化对象

void saveOrUpdate(Object object)

//根据ID判断是save还是update,如果id存在,则为update,若id不存在,即为save

Query createQuery(String hql)

//执行HQL查询

相关文档
最新文档