一、JDBC
使用JDBC访问数据库的步骤
- 定义数据库驱动以及连接信息
- 注册数据库驱动
- 获取数据库连接
- 创建一个查询
- 定义执行的SQL
- 执行SQL,获取ResultSet结果集
- 从结果集中取出数据
- 关闭连接
public class JdbcTest {
// 1.定义数据库驱动以及连接信息
private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String JDBC_URL = "jdbc:mysql://rm-uf67r962043910k193o.mysql.rds.aliyuncs.com:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true";
private static final String JDBC_USER = "root";
private static final String JBDC_PASSWORD = "Abc*123456";
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
//2.注册数据库驱动
Class.forName(JDBC_DRIVER);
//3.获取数据库连接
connection = DriverManager.getConnection(JDBC_URL,JDBC_USER,JBDC_PASSWORD);
//4.创建一个查询
statement = connection.createStatement();
//5.定义执行的SQL
String sql = "SELECT * FROM t_user";
//6.执行SQL,获取ResultSet结果集
ResultSet resultSet = statement.executeQuery(sql);
//7.从结果集中取出数据
List<User> userList = new ArrayList<>();
while (resultSet.next()){
User user = new User();
user.setId(resultSet.getInt("id"));
user.setUserName(resultSet.getString("user_name"));
user.setRealName(resultSet.getString("real_name"));
user.setSex(resultSet.getByte("sex"));
user.setMobile(resultSet.getString("mobile"));
user.setEmail(resultSet.getString("email"));
user.setNote(resultSet.getString("note"));
System.out.println(user.toString());
userList.add(user);
}
// 8.关闭连接
connection.close();
statement.close();
resultSet.close();
} catch (Exception e){
e.printStackTrace();
} finally {
try {
if (statement != null)
statement.close();
} catch (SQLException se2) {
}// nothing we can do
try {
if (connection != null)
connection.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
复制代码
上述代码中使用Statement对象执行的查询,如果SQL语句中有参数占位符建议使用PreparedStatement对象来执行查询,PreparedStatement对象可以对SQL语句进行预编译,可以放置SQL注入;而且性能相对Statement会更好些。Jdbc针对数据库写操作需要对事务进行提交。
JDBC访问数据库存在的弊端:
- 操作数据库步骤繁琐
- 代码和SQL语句耦合
- 连接资源需要手动关闭,会有隐患
二、ORM
对象关系映射(ORM),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
ORM的优势:
- 更加贴合面向对象编程语意
- 技术和业务解耦
- 自动关闭数据库连接,释放资源
HIBERNATE