/********************************************************/
/*************Hibernate封装BaseDao(原生态)*************/
/********************************************************/
概要说明:
Hibernate封装BaseDao主要是通过调用HibernateUtil(这个类也是封装的)来实现基本的CURD操作;在HibernateUtil中,通过Configuration实例构建SessionFactory,SessionFactory用来创建Session实例,Configuration实例根据当前的配置信息,构造SessionFactory实例并返回。一旦SessionFactory构造完毕,即被赋予特定的配置信息。Session是持久层操作的基础,相当于JDBC的Connection。通过SessionFactory实例构建。Session实例提供的saveOrUpdate、delete和createQuery方法分别实现了数据库的插入更新、删除和查询操作,简化了数据库的基本操作
代码实例:
* HibernateUtil:Hibernate工具类,Hibernate映射操作公用类 负责初始化、打开连接、获取连接、关闭连接等操作;
*HibernateBaseDao:调用Hibernate工具类HibernateUtil进行系列CURD操作;
另外一种常见的封装是继承Spring的HibernateDaoSupport,也就是
org.springframework.orm.hibernate3.support.HibernateDaoSupport;
概要说明:
Spring为Hibernate 的整合提供了很好的支持,Spring的 DAO 支持类是:HiberanteDaoSupport; 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是Hibernate Session的轻量级封装; 该类只需要传入一个 SessionFactory 引用,即可得到一个HibernateTemplate实例,该实例功能非常强大,数据库的大部分操作也很容易实现。所有的 DAO类都继承HibernateDaoSupport,并实现相应的DAO 接口。而业务逻辑对象则面向接口编程,无须关心DAO 的实现细节。通过这种方式,可以让应用在不同的持久化技术之间切换;
代码实例:
* HibernateBaseDao:继承Spring的HibernateDaoSupport
/********************************************************/
/***************Ibatis封装BaseDao(原生态)**************/
/********************************************************/
概要说明(个人测试):
Ibatis封装BaseDao主要是通过调用IbatisUtil(这个类也是封装的)来实现基本的CURD操作;
关于IbatisUtil:SQLMap组件封装了iBATIS SQLMap相关SqlMapClient等内容,总共由两个接口、三个类组成。其中DaoTransaction接口、DaoTransactionManager接口和ConnectionDaoTransaction接口是通用接口,也是外部调用的API接口。SqlMapDao TransactionManager类实现DaoTransactionManager接口并关联iBATIS
SQLMap的SqlMapClient接口,同时它也依赖SqlMapDaoTransaction类。SqlMapDaoTransaction类实现ConnectionDaoTransaction接口(该接口继承DaoTransaction接口)并关联iBATIS SQLMap的SqlMapClient接口
SQLMap事务管理实现说明:
(1)初始化时,SqlMapDaoTransactionManager对象创建SqlMapClient对象。
(2)当调用SqlMapDaoTransactionManager对象的startTransaction方法时,该SqlMapClient对象为参数实例化一个SqlMapDaoTransaction对象,并调用SqlMapClient对象的startTransaction方法。
(3)当对SqlMapDaoTransactionManager对象进行commitTransaction、rollbackTransaction等业务操作,SqlMapDaoTransactionManager对象转移给SqlMapDaoTransaction对象的commit和rollback等方法。而SqlMapDaoTransaction对象也是最后转换给SqlMapClient对象的commitTransaction或endTransaction等方法进行处理的,完成处理后调用SqlMapClient对象的endTransaction方法,结束当前事务处理;
SQLMap事务处理的序列如图:
其实现步骤说明:
SqlMapDaoTransactionManager和SqlMapDaoTransaction
第1步骤:外部调用SqlMapDaoTransactionManager对象的configure方法,并把配置信息参数传递进来。
第1.1步骤:SqlMapDaoTransactionManager对象调用Resources的静态方法getUrlAsReader方法,获得Reader对象。
第1.2步骤:SqlMapDaoTransactionManager对象调用SqlMapClientBuilder对象的静态方法buildSqlMapClient,生成SqlMapClient对象。
第2步骤:外部调用SqlMapDaoTransactionManager对象的startTransaction方法。
第2.1步骤:SqlMapDaoTransactionManager对象创建SqlMapDaoTransaction对象,并把参数SqlMapClient对象传递过去。
第2.1.1步骤:SqlMapDaoTransaction对象调用SqlMapClient对象的startTransaction方法。
第3步骤:外部调用SqlMapDaoTransactionManager对象的commitTransaction方法。
第3.1步骤:SqlMapDaoTransactionManager对象调用SqlMapDaoTransaction对象的commit方法。
第3.1.1步骤:SqlMapDaoTransaction对象调用SqlMapClient对象的commitTransaction方法。
第3.1.2步骤:SqlMapDaoTransaction对象调用SqlMapClient对象的endTransaction方法,关闭SQLMap的当前事务。
第4步骤:外部调用SqlMapDaoTransactionManager对象的commitTransaction方法。
第4.1步骤:SqlMapDaoTransactionManager对象调用SqlMapDaoTransaction对象的commit方法。
第4.1.1步骤:SqlMapDaoTransaction对象调用SqlMapClient对象的endTransaction方法,关闭SQLMap的当前事务。
代码实例:
* IbatisUtil :Ibatis工具类,Ibatis操作公用类、负责初始化SqlMapClient操作
* IbatisBaseDao:调用Ibatis工具类IbatisUtil进行系列CURD操作
另外一种常见的封装是继承Spring的SqlMapClientDaoSupport,也就是
org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
代码实例:
* IbatisBaseDao:继承Spring的SqlMapClientDaoSupport
/********************************************************/
/*****************jdbctemplate封装BaseDao****************/
/********************************************************/
第一:概要说明:
1,Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现:(注:使用了Spring JDBC抽象框架之后,应用开发人员只需要完成斜体字部分的编码工作。)
指定数据库连接参数
打开数据库连接
声明SQL语句
预编译并执行SQL语句
遍历查询结果(如果需要的话)
处理每一次遍历操作
处理抛出的任何异常
处理事务
关闭数据库连接
Spring将替我们完成所有单调乏味的JDBC底层细节处理工作
2,Spring JDBC包结构
Spring JDBC抽象框架由四个包构成:core、 dataSource、object以及support。
org.springframework.jdbc.core包由JdbcTemplate类以及相关的回调接口(callback interface)和类组成。
org.springframework.jdbc.datasource包由一些用来简化DataSource访问的工具类,以及各种DataSource接口的简单实现(主要用于单元测试以及在J2EE容器之外使用JDBC)组成。工具类提供了一些静态方法,诸如通过JNDI获取数据连接以及在必要的情况下关闭这些连接。它支持绑定线程的连接,比如被用于DataSourceTransactionManager的连接。
接下来,org.springframework.jdbc.object包由封装了查询、更新以及存储过程的类组成,这些类的对象都是线程安全并且可重复使用的。它们类似于JDO,与JDO的不同之处在于查询结果与数据库是“断开连接”的。它们是在org.springframework.jdbc.core包的基础上对JDBC更高层次的抽象。
最后,org.springframework.jdbc.support包提供了一些SQLException的转换类以及相关的工具类。
在JDBC处理过程中抛出的异常将被转换成org.springframework.dao包中定义的异常。因此使用Spring JDBC进行开发将不需要处理JDBC或者特定的RDBMS才会抛出的异常。所有的异常都是unchecked exception,这样我们就可以对传递到调用者的异常进行有选择的捕获。
3,JDBC核心类实现JDBC的基本操作和错误处理
4,注意事项:
1) jdbcTemplate有很多的ORM化回调操作将返回结果转为对象列表,但很多时候还是需要返回ResultSet,Spring有提供一个类似ResultSet的 Spring SqlRowSet对象。
2) 注意jdbcTemplate尽量只执行查询操作,莫要进行更新,否则很容易破坏Hibernate的二级缓存体系。
相关推荐
Ibatis 提供了动态 SQL 支持,能够处理复杂的查询逻辑,同时避免了 JDBCTemplate 和 Hibernate 等框架中的过度封装。它的主要优势在于灵活性、性能优化以及对 SQL 的直接控制。 **2. Ibatis 的核心组件** - **...
Spring的ORM支持还包括对JDBC的高级封装,如JdbcTemplate和SimpleJdbcInsert等,这些工具类使得使用JDBC进行数据库操作更加简洁和安全。此外,Spring还支持数据源的管理,以及声明式和编程式的事务管理,确保了数据...
4. **Apache DBUtils** 和 **Spring JDBCTemplate**:这两个框架对 SQL 语句进行了封装,但相比 ORM 框架,它们的抽象程度较低,需要更多的手动操作。 **使用 Hibernate 的原因** Hibernate 通过封装 JDBC,减少了...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
Spring通过`JdbcTemplate`和`SimpleJdbcInsert`等类提供了对JDBC的抽象,减少了直接使用JDBC代码的繁琐性。`JdbcTemplate`提供了一组模板方法,如`queryForList`、`update`等,用于执行SQL查询和更新操作。`...
Spring-ORM对多种ORM框架进行了封装,如Hibernate、JPA和iBatis。例如,对于Hibernate,Spring提供了HibernateTemplate和HibernateDaoSupport类,它们简化了与Hibernate Session的交互。源码中可以看到这些类如何...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
DAO(Data Access Object)模式是Java开发中常用的一种设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦。Spring框架提供了对DAO的支持,通过依赖注入(DI)和面向切面编程(AOP)简化了数据访问...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
(4)在Hitis中,你可以与spring无缝集成,借助于JdbcTemplate,你可以快速封装出自己的dao层 (5)在ibatis中,想做物理分页,你必须在写一个列表sql,还要写一个90%一样的总页数的sql,不仅如此,你还要在列表sql外包...
如果你觉得hibernate,ibatis等orm框架过于笨重,不烦试下jdao,它可以在团队开发中规范团队持久层代码,较少开发量,特别在单表操作上基本是对象操作,对于复杂SQL查询也有较好的封装。一、使用DAO方式操作数据:...
远程调用技术如Dwr和WebService实现了不同应用间的通信,JDBC用于数据库操作,ORM框架如Hibernate、JdbcTemplate、Ibatis则简化了数据库交互。 数据库层面,需要熟悉SQL语言,包括MySQL、Oracle、SQL Server和DB2等...
java dal 封装的通用dao 数据访问层,如果你不喜欢用Hibernate、Mybaits这类ORM框架,喜欢Spring JdbcTemplate或DbUtils,那么可以试试这个封装的通用dal
- **对ORM的支持**:支持主流ORM框架的集成,如Hibernate、iBatis等。提供了一些辅助类,如LocalSessionFactoryBean,用于简化与ORM框架的集成。 ### Spring MVC Spring MVC是一个基于Servlet API的MVC框架,用于...
数据库访问方面,JDBC是Java连接数据库的标准接口,而Hibernate、JDBC Util、JPA、JdbcTemplate、Ibatis等ORM框架则简化了数据库操作。远程调用技术如Dwr和WebService实现了不同系统间的通信。 在面试准备中,了解...
数据库访问层涉及JDBC、Hibernate、DbUtil、JPA、JdbcTemplate和iBatis等技术,它们简化了与数据库的交互。此外,XML处理和编程设计也是必不可少的技能。远程调用技术如Dwr和WebService使得不同系统间的通信成为可能...