- 浏览: 21503953 次
- 性别:
博客专栏
-
跟我学spring3
浏览量:2418633
-
Spring杂谈
浏览量:3008767
-
跟开涛学SpringMVC...
浏览量:5639455
-
Servlet3.1规范翻...
浏览量:259916
-
springmvc杂谈
浏览量:1597309
-
hibernate杂谈
浏览量:250216
-
跟我学Shiro
浏览量:5858946
-
跟我学Nginx+Lua开...
浏览量:701998
-
亿级流量网站架构核心技术
浏览量:785219
文章分类
- 全部博客 (329)
- 跟我学Nginx+Lua开发 (13)
- 跟我学spring (54)
- 跟开涛学SpringMVC (34)
- spring4 (16)
- spring杂谈 (50)
- springmvc杂谈 (22)
- 跟我学Shiro (26)
- shiro杂谈 (3)
- hibernate杂谈 (10)
- java开发常见问题分析 (36)
- 加速Java应用开发 (5)
- Servlet 3.1规范[翻译] (21)
- servlet3.x (2)
- websocket协议[翻译] (14)
- websocket规范[翻译] (1)
- java web (6)
- db (1)
- js & jquery & bootstrap (4)
- 非技术 (4)
- reminder[转载] (23)
- 跟叶子学把妹 (8)
- nginx (2)
- 架构 (19)
- flume架构与源码分析 (4)
最新评论
-
xxx不是你可以惹得:
认真看错误代码,有时候重启电脑就行了 醉了 我把数据库配置写死 ...
第十六章 综合实例——《跟我学Shiro》 -
dagger9527:
holyselina 写道您前面说到能获取调用是的参数数组,我 ...
【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3 -
xxx不是你可以惹得:
Access denied for user 'root'@' ...
第十六章 综合实例——《跟我学Shiro》 -
dagger9527:
只有@AspectJ支持命名切入点,而Schema风格不支持命 ...
【第六章】 AOP 之 6.5 AspectJ切入点语法详解 ——跟我学spring3 -
dagger9527:
支持虽然会迟到,但永远不会缺席!
【第四章】 资源 之 4.3 访问Resource ——跟我学spring3
8.3 集成iBATIS iBATIS是一个半自动化的ORM框架,需要通过配置方式指定映射SQL语句,而不是由框架本身生成(如Hibernate自动生成对应SQL来持久化对象),即Hibernate属于全自动ORM框架。 Spring提供对iBATIS 2.X的集成,提供一致的异常体系、一致的DAO访问支持、Spring管理事务支持。 Spring 2.5.5+版本支持iBATIS 2.3+版本,不支持低版本。 Spring通过使用如下Bean进行集成iBATIS: configLocation和configLocations:用于指定SQL Map XML配置文件,用于指定如数据源等配置信息; mappingLocations:用于指定SQL Map映射文件,即半自动概念中的SQL语句定义; sqlMapClientProperties:定义iBATIS 配置文件配置信息; dataSource:定义数据源。 如果在Spring配置文件中指定了DataSource,就不要在iBATIS配置文件指定了,否则Spring配置文件指定的DataSource将覆盖iBATIS配置文件中定义的DataSource。 接下来示例一下如何集成iBATIS: 1、准备需要的jar包,从spring-framework-3.0.5.RELEASE-dependencies.zip中拷贝如下jar包: com.springsource.com.ibatis-2.3.4.726.jar 2、 对象模型定义,此处使用第七章中的UserModel; 3、 iBATIS映射定义(chapter8/sqlmaps/UserSQL.xml): 4、 iBATIS配置文件(chapter8/sql-map-config.xml)定义: 5、 数据源定义,此处使用第7章的配置文件,即“chapter7/applicationContext-resources.xml”文件。 6、 SqlMapClient配置(chapter8/applicationContext-ibatis.xml)定义: 7、 获取SqlMapClient: 此处我们使用了chapter7/applicationContext-resources.xml定义的“dataSource”数据源,通过ctx.getBean(SqlMapClient.class)获取SqlMapClient。 8、 通过SqlMapClient创建和删除表: 9、 使用SqlMapClient进行对象持久化: 同样令人心烦的事务管理和冗长代码,Spring通用提供了SqlMapClientTemplate模板类来解决这些问题。 SqlMapClientTemplate模板类同样用于简化事务管理及常见操作,类似于JdbcTemplate模板类,对于复杂操作通过提供SqlMapClientCallback回调接口来允许更复杂的操作。 接下来示例一下SqlMapClientTemplate的使用: 通过new SqlMapClientTemplate(sqlMapClient)创建HibernateTemplate模板类对象,通过调用模板类的save方法持久化对象,并且自动享受到Spring管理事务的好处。 而且SqlMapClientTemplate提供使用SqlMapClientCallback回调接口的方法execute用来支持复杂操作,当然也自动享受到Spring管理事务的好处。 类似于JdbcDaoSupport类,Spring对iBATIS也提供了SqlMapClientDaoSupport类来支持一致的数据库访问。SqlMapClientDaoSupport也是DaoSupport实现: 接下来示例一下Spring集成iBATIS的最佳实践: 1、 定义Dao接口,此处使用cn.javass.spring.chapter7.dao.IUserDao: 2、 定义Dao接口实现,此处是iBATIS实现: 3、修改iBATS映射文件(chapter8/sqlmaps/UserSQL.xml),添加countAll查询: 此处注意首先iBATIS实现放在dao.ibaitis包里,其次实现类命名如UserIbatisDaoImpl,即×××IbatisDaoImpl,当然如果自己有更好的命名规范可以遵循自己的,此处只是提个建议。 4、进行资源配置,使用resources/chapter7/applicationContext-resources.xml: 5、dao定义配置,在chapter8/applicationContext-ibatis.xml中添加如下配置: 首先定义抽象的abstractDao,其有一个sqlMapClient属性,从而可以让继承的子类自动继承sqlMapClient属性注入;然后定义userDao,且继承abstractDao,从而继承sqlMapClient注入;我们在此给配置文件命名为applicationContext-ibatis.xml表示iBAITIS实现。 5、 最后测试一下吧(cn.javass.spring.chapter8. IbatisTest): 和Spring JDBC框架的最佳实践完全一样,除了使用applicationContext-ibatis.xml代替了applicationContext-jdbc.xml,其他完全一样。也就是说,DAO层的实现替换可以透明化。 Spring集成iBATIS进行CURD(增删改查),也非常简单,首先配置映射文件,然后调用SqlMapClientTemplate相应的函数进行操作即可,此处就不介绍了。 (本笔记写于2010年底) 2010年4月份 iBATIS团队发布iBATIS 3.0的GA版本的候选版本,在iBATIS 3中引入了泛型、注解支持等,因此需要Java5+才能使用,但在2010年6月16日,iBATIS团队决定从apache迁出并迁移到Google Code,并更名为MyBatis。目前新网站上文档并不完善。 目前iBATIS 2.x和MyBatis 3不是100%兼容的,如配置文件的DTD变更,SqlMapClient直接由SqlSessionFactory代替了,包名也有com.ibatis变成org.ibatis等等。 ibatis 3.x和MyBatis是兼容的,只需要将DTD变更一下就可以了。 感兴趣的朋友可以到http://www.mybatis.org/官网去下载最新的文档学习,作者只使用过iBATIS2.3.4及以前版本,没在新项目使用过最新的iBATIS 3.x和Mybatis,因此如果读者需要在项目中使用最新的MyBatis,请先做好调研再使用。 接下来示例一下Spring集成MyBatis的最佳实践: 1、准备需要的jar包,到MyBatis官网下载mybatis 3.0.4版本和mybatis-spring 1.0.0版本,并拷贝如下jar包到类路径: mybatis-3.0.4\mybatis-3.0.4.jar //核心MyBatis包 mybatis-spring-1.0.0\mybatis-spring-1.0.0.jar //集成Spring包 2、对象模型定义,此处使用第七章中的UserModel; 3、MyBatis映射定义(chapter8/sqlmaps/UserSQL-mybatis.xml): 从映射定义中可以看出MyBatis与iBATIS2.3.4有如下不同: 3、 MyBatis配置文件(chapter8/sql-map-config-mybatis.xml)定义: 从配置定义中可以看出MyBatis与iBATIS2.3.4有如下不同: 4、 定义Dao接口,此处使用cn.javass.spring.chapter7.dao. IUserDao: 5、 定义Dao接口实现,此处是MyBatis实现: 和Ibatis集成方式不同的有如下地方: 6、进行资源配置,使用resources/chapter7/applicationContext-resources.xml: 7、dao定义配置,在chapter8/applicationContext-mybatis.xml中添加如下配置: 和Ibatis集成方式不同的有如下地方: 首先定义抽象的abstractDao,其有一个sqlSessionFactory属性,从而可以让继承的子类自动继承sqlSessionFactory属性注入;然后定义userDao,且继承abstractDao,从而继承sqlSessionFactory注入;我们在此给配置文件命名为applicationContext-mybatis.xml表示MyBatis实现。 8、最后测试一下吧(cn.javass.spring.chapter8. IbatisTest): 和Spring 集成Ibatis的最佳实践完全一样,除了使用applicationContext-mybatis.xml代替了applicationContext-ibatis.xml,其他完全一样,且MyBatis 3.x与Spring整合只能运行在Spring3.x。 在写本书时,MyBatis与Spring集成所定义的API不稳定,且期待Spring能在发布新版本时将加入对MyBatis的支持。 原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/0/2498.html】8.3.1 如何集成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="UserSQL">
<statement id="createTable">
<!--id自增主键从0开始 -->
<![CDATA[
create memory table test(
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar(100))
]]>
</statement>
<statement id="dropTable">
<![CDATA[ drop table test ]]>
</statement>
<insert id="insert" parameterClass="cn.javass.spring.chapter7.UserModel">
<![CDATA[
insert into test(name) values (#myName#)
]]>
<selectKey resultClass="int" keyProperty="id" type="post">
<!-- 获取hsqldb插入的主键 -->
call identity();
<!-- mysql使用select last_insert_id();获取插入的主键 -->
</selectKey>
</insert>
</sqlMap>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings enhancementEnabled="true" useStatementNamespaces="true"
maxTransactions="20" maxRequests="32" maxSessions="10"/>
<sqlMap resource="chapter8/sqlmaps/UserSQL.xml"/>
</sqlMapConfig>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<!-- 1、指定数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 2、指定配置文件 -->
<property name="configLocation" value="chapter8/sql-map-config.xml"/>
</bean>
package cn.javass.spring.chapter8;
//省略import
public class IbatisTest {
private static SqlMapClient sqlMapClient;
@BeforeClass
public static void setUpClass() {
String[] configLocations = new String[] {
"classpath:chapter7/applicationContext-resources.xml",
"classpath:chapter8/applicationContext-ibatis.xml"};
ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
sqlMapClient = ctx.getBean(SqlMapClient.class);
}
}
@Before
public void setUp() throws SQLException {
sqlMapClient.update("UserSQL.createTable");
}
@After
public void tearDown() throws SQLException {
sqlMapClient.update("UserSQL.dropTable");
}
@Test
public void testFirst() throws SQLException {
UserModel model = new UserModel();
model.setMyName("test");
SqlMapSession session = null;
try {
session = sqlMapClient.openSession();
beginTransaction(session);
session.insert("UserSQL.insert", model);
commitTransaction(session);
} catch (SQLException e) {
rollbackTransacrion(session);
throw e;
} finally {
closeSession(session);
}
}
private void closeSession(SqlMapSession session) {
session.close();
}
private void rollbackTransacrion(SqlMapSession session) throws SQLException {
if(session != null) {
session.endTransaction();
}
}
private void commitTransaction(SqlMapSession session) throws SQLException {
session.commitTransaction();
}
private void beginTransaction(SqlMapSession session) throws SQLException {
session.startTransaction();
}
8.3.2 使用 SqlMapClientTemplate
@Test
public void testSqlMapClientTemplate() {
SqlMapClientTemplate sqlMapClientTemplate =
new SqlMapClientTemplate(sqlMapClient);
final UserModel model = new UserModel();
model.setMyName("myName");
sqlMapClientTemplate.insert("UserSQL.insert", model);
//通过回调允许更复杂操作
sqlMapClientTemplate.execute(new SqlMapClientCallback<Void>() {
@Override
public Void doInSqlMapClient(SqlMapExecutor session) throws SQLException {
session.insert("UserSQL.insert", model);
return null;
}});
}
8.3.3集成iBATIS及最佳实践
package cn.javass.spring.chapter8.dao.ibatis;
//省略import
public class UserIbatisDaoImpl extends SqlMapClientDaoSupport
implements IUserDao {
@Override
public void save(UserModel model) {
getSqlMapClientTemplate().insert("UserSQL.insert", model);
}
@Override
public int countAll() {
return (Integer) getSqlMapClientTemplate().queryForObject("UserSQL.countAll");
}
}
<select id="countAll" resultClass="java.lang.Integer">
<![CDATA[ select count(*) from test ]]>
</select>
<bean id="abstractDao" abstract="true">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
<bean id="userDao"
class="cn.javass.spring.chapter8.dao.ibatis.UserIbatisDaoImpl"
parent="abstractDao"/>
@Test
public void testBestPractice() {
String[] configLocations = new String[] {
"classpath:chapter7/applicationContext-resources.xml",
"classpath:chapter8/applicationContext-ibatis.xml"};
ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
IUserDao userDao = ctx.getBean(IUserDao.class);
UserModel model = new UserModel();
model.setMyName("test");
userDao.save(model);
Assert.assertEquals(1, userDao.countAll());
}
8.3.4Spring+iBATIS的CURD
8.3.5集成MyBatis及最佳实践
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserSQL">
<sql id="createTable">
<!--id自增主键从0开始 -->
<![CDATA[
create memory table test(
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar(100))
]]>
</sql>
<sql id="dropTable">
<![CDATA[ drop table test ]]>
</sql>
<insert id="insert" parameterType="cn.javass.spring.chapter7.UserModel">
<![CDATA[ insert into test(name) values (#{myName}) ]]>
<selectKey resultType="int" keyProperty="id" order="AFTER">
<!-- 获取hsqldb插入的主键 -->
call identity();
<!-- mysql使用select last_insert_id();获取插入的主键 -->
</selectKey>
</insert>
<select id="countAll" resultType="java.lang.Integer">
<![CDATA[ select count(*) from test ]]>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
</settings>
<mappers>
<mapper resource="chapter8/sqlmaps/UserSQL-mybatis.xml"/>
</mappers>
</configuration>
package cn.javass.spring.chapter8.dao.mybatis;
//省略import
public class UserMybatisDaoImpl extends SqlSessionDaoSupport
implements IUserDao {
@Override
public void save(UserModel model) {
getSqlSession().insert("UserSQL.insert", model);
}
@Override
public int countAll() {
return (Integer) getSqlSession().selectOne("UserSQL.countAll");
}
}
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/><!-- 1、指定数据源 -->
<property name="configLocation" value="chapter8/sql-map-config-mybatis.xml"/>
</bean>
<bean id="abstractDao" abstract="true">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="userDao"
class="cn.javass.spring.chapter8.dao.mybatis.UserMybatisDaoImpl"
parent="abstractDao"/>
@Test
public void testMybatisBestPractice() {
String[] configLocations = new String[] {
"classpath:chapter7/applicationContext-resources.xml",
"classpath:chapter8/applicationContext-mybatis.xml"};
ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocations);
IUserDao userDao = ctx.getBean(IUserDao.class);
UserModel model = new UserModel();
model.setMyName("test");
userDao.save(model);
Assert.assertEquals(1, userDao.countAll());
}
评论
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {
public Person getPerson(String name);
}
xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>
service类:
public void execute() {
Person person = personMapper.getPerson("zw");
}
另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model); 这样的语句。
这样确实可以自动扫描,但,如果在dao层面要做一些缓存方面的工作,就比较麻烦了。
不如每个dao增加缓存功能。
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {
public Person getPerson(String name);
}
xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>
service类:
public void execute() {
Person person = personMapper.getPerson("zw");
}
另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model); 这样的语句。
+1
利用mapper的xml文件映射到java类的,然后,在spring中将该mapper类,注入到service中,带来的方便,就是,service类中可以直接调用mapper的方法,犹如,调用了xml中定义的操作。
例如:
mapper类:
public interface PersonMapper {
public Person getPerson(String name);
}
xml定义:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="PersonMapper">
<select id="getPerson" parameterType="string" resultType="Person">
select name, age from person where name = #{name}
</select>
</mapper>
service类:
public void execute() {
Person person = personMapper.getPerson("zw");
}
另外,这里的依赖关系,通过spring的xml配置实现。
这样避免了,使用getSqlSession().insert("UserSQL.insert", model); 这样的语句。
谢谢
发表评论
-
第十九章 动态URL权限控制——《跟我学Shiro》
2014-03-28 22:51 0用过Spring Security的朋友应该比较熟悉对URL ... -
第十九章 动态URL权限控制——《跟我学Shiro》
2014-03-28 22:51 0用过Spring Security的朋友应该比较熟悉对URL ... -
在应用层通过spring解决数据库读写分离
2012-11-09 07:28 3如何配置mysql数据库的主从? 单机配置mys ... -
跟我学spring3系列 word原版 下载
2012-11-03 20:39 122189《跟我学spring3系列》自发布以来得到大家的认可,非 ... -
跟我学spring3 电子书下载(完)
2012-05-03 14:23 52715感谢iteye各位网友对我的支持,在此谢过了! ... -
跟我学spring3 目录贴及电子书下载
2012-04-10 19:00 390480扫一扫,关注我的公众号 购买地址 ... -
【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3
2012-03-30 07:11 2750013.3 集成测试 13.3.1 ... -
【第十三章】 测试 之 13.1 概述 13.2 单元测试 ——跟我学spring3
2012-03-28 07:46 2361313.1 概述 13.1.1 测 ... -
【第十二章】零配置 之 12.5 综合示例-积分商城 ——跟我学spring3
2012-03-27 15:13 2079812.5 综合示例 12.5.1 概述 在第十一 ... -
【第十二章】零配置 之 12.4 基于Java类定义Bean配置元数据 ——跟我学spring3
2012-03-26 08:26 2990412.4 基于Java类定义Bean配置元数据 12 ... -
【第十二章】零配置 之 12.4 基于Java类定义Bean配置元数据 ——跟我学spring3
2012-03-26 08:00 56712.4 基于Java类定义Bean配置元数据 12 ... -
spring培训PPT(欢迎下载)
2012-03-24 21:55 45java私塾的 spring培训的PPT 欢迎大家下载。 包括 ... -
java私塾的spring培训PPT(欢迎下载)
2012-03-22 12:41 2973java私塾的 spring培训的PPT 欢迎大家下载。 ... -
【第十二章】零配置 之 12.3 注解实现Bean定义 ——跟我学spring3
2012-03-22 08:00 2665312.3 注解实现Bean定 ... -
【第十二章】零配置 之 12.2 注解实现Bean依赖注入 ——跟我学spring3
2012-03-19 08:00 3314912.2 注解实现Bean依赖注入 12.2.1 ... -
【第十二章】零配置 之 12.1 概述 ——跟我学spring3
2012-03-19 07:59 2028812.1 概述 12.1.1 什 ... -
【第十一章】 SSH集成开发积分商城 之 11.3 实现积分商城层 ——跟我学spring3
2012-03-16 08:09 1805711.3 实现积分商城层 11.3.1 概述 ... -
【第十一章】 SSH集成开发积分商城 之 11.2 实现通用层 ——跟我学spring3
2012-03-14 08:08 1911611.2 实现通用层 11.2 ... -
【第十一章】 SSH集成开发积分商城 之 11.1 概述 ——跟我学spring3
2012-03-13 16:37 1941611.1 概述 11.1.1 功能概述 ... -
【第十章】集成其它Web框架 之 10.4 集成JSF ——跟我学spring3
2012-03-13 08:46 12591先进行通用配置, 【第十章】集成其它Web框架 之 1 ...
相关推荐
1. spring 1.1 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3 . . ....1.36 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 . . . . . . . . . . . . . . . . . . .352
最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 <bean id="sqlMapClient" class="org.spring...
通过阅读《跟我学Spring3(8.1)对ORM的支持之概述Java开发Java经验技巧共3页.pdf》这本书或文档,你可以深入学习Spring如何无缝地集成ORM框架,提升你的Java开发技能。但请注意,压缩包内的"赚钱项目"文件可能与此...
在本节中,我们将深入探讨Spring 3如何支持ORM(对象关系映射)技术,特别是其与Hibernate 3的集成。ORM技术允许开发者将数据库操作抽象化,使得Java对象可以直接与数据库中的记录进行交互,从而减少对SQL的直接依赖...
《跟我学Spring3》这本书详细介绍了Spring框架在多个方面的应用,包括ORM支持、事务管理和Web框架集成等。以下是对这些章节内容的详细说明: 【第八章】 对ORM的支持: 1. **8.1 概述**:ORM(Object-Relational ...
8.1节概述对ORM的支持,8.2节介绍如何集成Hibernate3,8.3节介绍如何集成iBATIS,8.4节介绍如何集成JPA(Java Persistence API)。 【第九章】Spring的事务管理。事务是数据库管理系统执行过程中的一个逻辑单位,由...
《跟我学Spring3》是一本深入浅出的Spring框架学习指南,...通过阅读这两部分PDF(跟我学spring3(8-13).pdf和跟我学spring3(1-7).pdf),你将能够逐步构建起对Spring框架的全面认识,从而在Java开发领域更上一层楼。
压缩包中的"gen-wo-xue-spring.pdf"可能是教程的概述或部分章节,"跟我学spring3(1-7).pdf"和"跟我学spring3(8-13).pdf"分为了两部分,覆盖了从基础到进阶的内容。"跟我学spring3-源码.rar"包含了示例代码,方便读者...
《跟我学Spring3》这本书详细介绍了Spring框架与各种ORM(对象关系映射)框架的集成,以及Spring的事务管理和Web框架集成。以下是其中关键知识点的深入解析: **8. ORM支持** 1. **8.1 概述**:ORM允许开发者以面向...
在第二部分(8-13章)中,开涛将深入讲解Spring的高级特性,如数据访问集成(包括JDBC、ORM框架如Hibernate和MyBatis)、Web层支持(如MVC框架)、以及Spring与其它技术的整合,如Spring Security用于权限控制和...
《跟我学Spring3》是一本深入浅出介绍Spring框架的电子书,分为两部分,分别是“跟我学Spring3(8-13).pdf”和“跟我学Spring3(1-7).pdf”,全面覆盖了Spring框架的核心概念和技术。Spring作为Java开发中的主流框架,...
《跟我学Spring3》这本书是针对Java开发人员深入学习Spring框架第三版的一份教程。Spring作为Java企业级应用开发中的核心框架,它以其强大的功能、灵活性和模块化设计深受开发者喜爱。Spring3版本在前一版本基础上...
《跟我学Spring3》这本书是针对Spring框架的深入学习指南,涵盖了多个关键章节,包括Spring对ORM(对象关系映射)的支持、事务管理和与其他Web框架的集成等内容。以下是各章节主要内容的详细阐述: 1. **第八章:对...
Spring3还提供了对数据库操作的支持,包括JDBC模板和集成ORM(Object-Relational Mapping,对象关系映射)框架,如iBATIS。 iBATIS作为一个轻量级的ORM框架,主要解决了SQL语句与Java代码的分离问题,使得开发者...
标题 "Eclipse Spring3.x集成ibatis2.x开发案例" 提供了我们即将探讨的核心内容:如何在Eclipse环境中利用Spring3.x版本与iBatis2.x版本进行整合开发。这个主题涵盖了Java企业级开发中的两个重要框架,Spring作为...
Spring3作为Spring框架的一个重要版本,在2012年发布后,由于其对Java新特性的支持、注解驱动的配置等特性,深受开发者的喜爱。 关于Spring3学习资料,本材料旨在为新手提供系统学习Spring3的资源和实例。在内容...