失效链接处理 |
ORM思想及相关框架实现原理_讲义 PDF 下载
本站整理下载:
相关截图:
主要内容:
课程大纲
ORM 思想
ORM 的经典应用:Hibernate 案例及实现原理
ORM 的经典应用:MyBatis 案例及实现原理
自定义一个 ORM 框架:MiniORM
一.ORM 思想
目前,通过 Java 语言连接并操作数据库的技术或方式已经有很多了,例如:JDBC,
Hibernate,MyBatis,TopLink 等等。其中 JDBC 是 Java 原生的 API,支持连接并操作各种关系
型数据库。相信每个程序员都是从 JDBC 开始学起的,然后才接触到各种持久层框架。
JDBC 作为 Java 原生 API,有优点,也有缺点,这里主要说一下缺点:
1. 编码繁琐,效率低
2. 数据库连接的创建和释放比较重复,也造成了系统资源的浪费
3. 大量硬编码,缺乏灵活性,不利于后期维护
4. 参数的赋值和数据的封装全是手动进行
... ...
可能有些程序员还可以再列出一些 JDBC 的缺点,如果你已经很久没有使用过 JDBC 了,
印象已经不深刻了,那么相信下面的代码能勾引起你的些许回忆。
public List<Book> findAll() {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
List<Book> bookList = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123");
//定义 sql 语句 ?表示占位符
String sql = "select * from t_book where author = ?";
//获取预处理 statement
preparedStatement = connection.prepareStatement(sql);
//设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的参数值
preparedStatement.setString(1, "张三");
//向数据库发出 sql 执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历查询结果集
bookList = new ArrayList<>();
while(resultSet.next()){
Book book=new Book();
book.setId(resultSet.getInt("id"));
book.setName(resultSet.getString("bname"));
book.setAuthor(resultSet.getString("author"));
book.setPrice(resultSet.getDouble("price"));
bookList.add(book);
}
return bookList;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
//释放资源
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} }
正是因为 JDBC 存在着各
|