- 浏览: 322530 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
Spring里的数据处理多数采用“模板方法”模式
web.xml文件中加载Spring配置文件路径:
获取数据源:
上面这段代码还可以简化成如下代码:
PropertyPlaceholderConfigurer类和context:property-placeholder元素在spring里面所起的作用是相同的,都是加载常量配置文件,只是context:property-placeholder元素更简化。
针对不同的对象/关系映射框架提供的模板有JdbcTemplate、HibernateTemplate、SimpleJdbcTemplate等很多模板。
使用模板的两种方法:
1)、将其配置为Spring上下文里的Bean,然后将其织入到程序的DAO。
2)、使用Spring的DAO支持类进一步简化程序DAO。【DAO支持类派生出自己的DAO类:在编写自己的DAO实现时,可以继承DAO支持类,然后调用模板获取方法来直接访问底层的数据访问模板。例如程序DAO继承了JdbcDaoSupport,那么只需调用getJdbcTemplate()方法就可以获得一个JdbcTemplate来使用。另外每个DAO支持类都能访问它与数据库进行通信所有的类,例如JdbcDAOSupport.getConnection()获得链接。DAO支持类举例:JdbcDAOSupport、HibernateDAOSupport、simpleJdbcDAOSupport等】
Spring的大多数持久支持选项依赖于数据源,首先需要配置Spring数据源,无论什么DAO支持类,都需先陪这个。
数据源获得的几种途径(Spring里配数据源的途径):
1)、jdbc驱动程序定义的数据源;
2)、jndi查询的数据源;
3)、连接池的数据源;
下面是采用连接池的方式配置数据源,首先配置连接池,需要下载DBCP,然后把jar文件放到classPath下,DBCP里面有多个提供池功能的数据源,我们采用最常用的一个BasicDataSource,这个使用起来比较简单,BasicDataSource的配置代码和常用的配置属性见P110。
jdbc驱动定义的数据源有两种:DriverManagerDataSource、SingleConnectionDataSource,这两种都有弊端,一般不用(一个是没有进行池管理,一个是只有一个连接,用的很少)。
下面说一下项目里面子常用的数据源配置结构,项目里最常用的配置方式是把数据库相关的配置信息放到properties文件里面,然后在配置数据源的时候引用这些配置。
上面这段就表示将数据库相关的三个配置文件加载到容器里面去,然后下面就配置数据源使用这些配置信息。通过$符号就能获取到上面这些配置文件里面配置的信息
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面首先讲解第一部分内容:使用JDBC模板
对于JDBC来说,Spring提供了3个模板类:JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate。
下面是这3个类最基本的类似的使用方式(它们的使用方式非常类似,只是执行查询、修改等操作时参数不同,配置完全类似):
1、首先声明Template:
<bean id="jdbcTemplate" class="org.spring......JdbcTemplate">
<property name="datasource" ref="dataSource"/>
</bean>
2、然后在Dao里面声明private JdbcTemplate jdbcTemplate,并声明set方法。
3、声明Dao Bean,并注入jdbcTemplate属性:
<bean id="rantDao" class="com.roadrant......JdbcRantDao">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
4、接下来就可以在DAO中使用jdbcTemplate操作数据库了。具体使用方式参考书上使用范例。(书上都有,要详细查看其中比如更新、查询、删除等对应方法)。
注意:上面是JdbcTemplate的大体使用示例及配置,另外两个NamedParameterJdbcTemplate、SimpleJdbcTemplate的配置基本相同,只需将类名修改下并且DAO是声明变量时将变量类型修改下即可。具体的操作SQL语句方式示例自己详细看书。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第二部分内容:Spring对JDBC的DAO支持类:
Spring的JdbcDaoSupport就是用于编写基于JDBC的DAO类的基类,我们只需让自己的DAO类继承它即可(下面是使用步骤):
1、让自己的DAO类继承JdbcDaoSupport,例如
public class JdbcRantDao extends JdbcDaoSupport......{.......}
2、接下来声明自己的DAO,并注入jdbcTemplate(不需要DAO里面定义jdbcTemplate属性)或直接将数据源注入(更简单,这样就不需要在Spring里声明jdbcTemplate Bean了)
<bean id="rantDao" class="com.roadrantz......JdbcRantDao">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
【注:这样的话就不需要在自己的DAO里定义jdbcTemplate这个属性了,因为JdbcDaoSupport类里有这个属性,继承过来即可。但还需要在Spring里声明jdbcTemplate Bean】;
或
<bean id="rantDao" class="com.roadrantz......JdbcRantDao">
<property name="dataSource" ref="dataSource"/>
</bean>
【注:当JdbcDao的dataSource属性被设置后,它会在内部创建一个JdbcTemplate实例,这样我们就不需要自己再Spring里明确声明一个JdbcTemplate Bean了,并且自己的Dao类里也不需要定义JdbcTemplate属性了。这种使用方式比较简单实用】
3、利用JdbcDaoSupport的getJdbcTemplate()方法能方便的访问JdbcTemplate,然后用它操作SQL语句操作数据库。具体JdbcTemplate操作SQL语句及各种增删改查操作示例见书上。
注意:上面是Spring对Jdbc的Dao支持类,使用示例及配置,另外两个NamedParameterJdbcDaoSupport、SimpleJdbcDaoSupport的配置基本相同,只需将Dao继承的类名修改下即可,例如getNamedParameterJdbcTemplate()方法即可获得NamedParameterJdbcTemplate的一个实例。具体操作SQL的使用方式将书上。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第三部分内容:Spring对ORM框架的支持,重点讲解Spring里继承Hibernate:
选择Hibernate版本:Hibernate2和Hibernate3使用中最重要一点区别是Hibernate3支持注解,Hibernate2不支持。大部分情况下还是使用Hibernate3。
与Hibernate进行狡猾的主要接口是org.hibernat.session,这个session接口提供了基本的数据访问功能,比如从数据库保存、更新、和加载对象,通过它,程序能执行任何持久功能。获得Hibernate Session对象引用的标准方式是实现Hibernate的SessionFactory接口。SessionFactory负责打开、关闭、和管理Hibernate Session,以及其他一些功能。
就像JdbcTemplate把JDBC的繁琐工作抽离出去一样,Spring的HibernateTemplate在Hibernate Session之上提供了一个抽象层,其主要功能是简化打开和关闭Hibernate会话,并且把Hibernate的特定异常转化为表Spring ORM异常之一。
下面是Spring集成Hibernate的步骤:
1、声明hibernateTemplate Bean并注入sessionFactory:
<class id="hibernateTemplate" class="org.springframework.......HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</class>
2、声明SessionFactory Bean,sessionFactory属性被设置为org.hibernate.SessionFactory实现的一个引用,这里提供几种可选的声明方式:
1)、使用Spring的LocalSessionFactoryBean:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalLocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources"><!--映射文件-->
<list>
<value>com/roadrantz/domain/Rant.hbm.xml</value>
.................
</list>
<property/>
<property name="hibernateProperties"><!--hibernate配置属性-->
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
</bean>
2)、我们可以选择使用注解把持久元数据标记到域对象。对于基于注解的Hibernate来说,Spring的AnnotationSessionFactory和上面的LocalSessionFactory Bean很像,只是它基于一个或多个域类里的注解和创建SessionFactory:
<bean id="sessionFactory" class=".............AnnotationSessionFactory">
<property name="dataSource" ....../>
<property name="annotatedClasses"><!--包含一个或多个包含持久注解的类-->
<list>
<value>com.roadrantz.domain.Rant</value>
..............
</list>
</property>
<property name="hibernateProperties">......</property>
</bean>
3、然后在自己的Dao类里面定义属性,例如:
private HibernateTemplate hibernateTemplate;并定义此属性的set方法。
4、声明Dao Bean,并注入hibernateTemplate属性:
<bean id="rantDao" class="com.roadrantz........HibernateRantDao">
<property name="hibernateTemplate" ref="hibernateTemplate">
</bean>
5、接下来就是使用hibernateTemplate操作数据库了,详细操作方式看书,。
例如:hibernateTemplate.saveOrUpdate(velicle);
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第四部分内容:Spring对Hibernate的DAO支持类:
为了让上面讲解的一部分的事情简单一些,Spring提供了HibernateDaoSupport,它能够让我们把会话工厂Bean直接装配到DAO类,会创建一个HibernateTemplate供DAO使用。
下面是使用步骤:
1、让自己的Dao类继承HibernateDaoSupport。例如:
public clss HibernateRantDao extends HibernateDaoSupport{....................}
2、在Dao里面使用getHibernteTemplate()方法获得由HibernateDaoSupport创建的HibernateTemplate(在Dao里面不需要自己定义HibernateTemplate属性了),并用它来操纵数据库。
例如:
public void saveMotorist(Motorist motorist) {
getHibernateTemplate().saveOrUpdate(motorist);
}
3、声明Dao Bean,并把SessionFactory Bean装配到Dao Bean的SessionFactory属性:
<bean id="rantDao" class="com.roadrantz.dao.hibernate.HibernateRantDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
【HibernateRantdao的新父类HibernateDaoSupport需要一个Hibernate SessionFactory,这样它才能在内部生成一个HibernateTemplate,所以需要把sessionFactory Bean注入到里面】
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第五部分内容:Hibernate3上下文会话(解决Hibernate与Spring的耦合问题):
HibernateTemplate的缺点是具有一定的侵入性,当我们使用Spring的HibernateTemplate时(无论直接使用还是通过HibernateDaoSupport),HibernateRantDao类都被耦合到Spring API,而Hibernate3的上下文会话可以解决这一问题。
下面是Hibernate3的上下文会话使用方式:
1、在自己的Dao里面定义SessionFactory sessionFactory属性,并定义此属性set方法。
2、配置自己的Dao Bean,并注入sessionFactory属性:
<bean id="rantDao" class="com.roadrantz.......HibernateRantDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
【在这个新的HibernateRantDao里,sessionFactory属性注入了一个sessionFactory引用,由于sessionFactory来自于Hibernate API,所以HibernateRantDao不再依赖于Spring框架,现在我们就要使用sessionFactory来处理当前会话,而不是使用HibernateTemplate来执行持久操作。】
3、使用SessionFactory来处理当前会话:
public void saveRant(Rant rant) {
sessionFactory.getCurrantSession().saveOrUpdate(rant);
}
web.xml文件中加载Spring配置文件路径:
<!--加载spring文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
获取数据源:
<!--常量配置文件读入--> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:config/jdbc.properties</value> <value>classpath*:config/hibernate.properties</value> <value>classpath*:config/mail.properties</value> </list> </property> </bean>
上面这段代码还可以简化成如下代码:
<context:property-placeholder location="classpath:config/hibernate.properties" />
PropertyPlaceholderConfigurer类和context:property-placeholder元素在spring里面所起的作用是相同的,都是加载常量配置文件,只是context:property-placeholder元素更简化。
针对不同的对象/关系映射框架提供的模板有JdbcTemplate、HibernateTemplate、SimpleJdbcTemplate等很多模板。
使用模板的两种方法:
1)、将其配置为Spring上下文里的Bean,然后将其织入到程序的DAO。
2)、使用Spring的DAO支持类进一步简化程序DAO。【DAO支持类派生出自己的DAO类:在编写自己的DAO实现时,可以继承DAO支持类,然后调用模板获取方法来直接访问底层的数据访问模板。例如程序DAO继承了JdbcDaoSupport,那么只需调用getJdbcTemplate()方法就可以获得一个JdbcTemplate来使用。另外每个DAO支持类都能访问它与数据库进行通信所有的类,例如JdbcDAOSupport.getConnection()获得链接。DAO支持类举例:JdbcDAOSupport、HibernateDAOSupport、simpleJdbcDAOSupport等】
Spring的大多数持久支持选项依赖于数据源,首先需要配置Spring数据源,无论什么DAO支持类,都需先陪这个。
数据源获得的几种途径(Spring里配数据源的途径):
1)、jdbc驱动程序定义的数据源;
2)、jndi查询的数据源;
3)、连接池的数据源;
下面是采用连接池的方式配置数据源,首先配置连接池,需要下载DBCP,然后把jar文件放到classPath下,DBCP里面有多个提供池功能的数据源,我们采用最常用的一个BasicDataSource,这个使用起来比较简单,BasicDataSource的配置代码和常用的配置属性见P110。
jdbc驱动定义的数据源有两种:DriverManagerDataSource、SingleConnectionDataSource,这两种都有弊端,一般不用(一个是没有进行池管理,一个是只有一个连接,用的很少)。
下面说一下项目里面子常用的数据源配置结构,项目里最常用的配置方式是把数据库相关的配置信息放到properties文件里面,然后在配置数据源的时候引用这些配置。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:config/jdbc.properties</value> <value>classpath*:config/hibernate.properties</value> <value>classpath*:config/mail.properties</value> </list> </property> </bean>
上面这段就表示将数据库相关的三个配置文件加载到容器里面去,然后下面就配置数据源使用这些配置信息。通过$符号就能获取到上面这些配置文件里面配置的信息
<bean id="proxoolDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver" value="${jdbc.driverClassName}"/> <property name="driverUrl" value="${jdbc.web.url}"/> <property name="user" value="${jdbc.web.username}"/> <property name="password" value="${jdbc.web.password}"/> <!-- 别名 --> <property name="alias" value="${jdbc.web.alias}"/> <!-- 最小连接数 (默认2个) --> <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}"/> <!-- 最大连接数 (默认5个) --> <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}"/> <!-- 测试的SQL执行语句 --> <property name="houseKeepingTestSql" value="${proxool.houseKeepingTestSql}"/> <!-- --> <property name="simultaneousBuildThrottle" value="${proxool.simultaneous-build-throttle}"/> <!-- 最大活动时间(超过此时间线程将被kill,默认为5分钟) --> <property name="maximumActiveTime" value="${proxool.maximumActiveTime}"/> <!-- 最少保持的空闲连接数 (默认2个) --> <property name="prototypeCount" value="${proxool.prototypeCount}"/> <property name="trace" value="true"/> <property name="verbose" value="true"/> <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒) --> <property name="houseKeepingSleepTime" value="${proxool.hourseKeepingSleepTime}"/> <!-- 连接最长时间(默认为4个小时) --> <property name="maximumConnectionLifetime" value="${proxool.maximumConnectionLifetime}"/> <!-- --> <property name="statistics" value="${proxool.statistics}"/> </bean>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面首先讲解第一部分内容:使用JDBC模板
对于JDBC来说,Spring提供了3个模板类:JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate。
下面是这3个类最基本的类似的使用方式(它们的使用方式非常类似,只是执行查询、修改等操作时参数不同,配置完全类似):
1、首先声明Template:
<bean id="jdbcTemplate" class="org.spring......JdbcTemplate">
<property name="datasource" ref="dataSource"/>
</bean>
2、然后在Dao里面声明private JdbcTemplate jdbcTemplate,并声明set方法。
3、声明Dao Bean,并注入jdbcTemplate属性:
<bean id="rantDao" class="com.roadrant......JdbcRantDao">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
4、接下来就可以在DAO中使用jdbcTemplate操作数据库了。具体使用方式参考书上使用范例。(书上都有,要详细查看其中比如更新、查询、删除等对应方法)。
注意:上面是JdbcTemplate的大体使用示例及配置,另外两个NamedParameterJdbcTemplate、SimpleJdbcTemplate的配置基本相同,只需将类名修改下并且DAO是声明变量时将变量类型修改下即可。具体的操作SQL语句方式示例自己详细看书。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第二部分内容:Spring对JDBC的DAO支持类:
Spring的JdbcDaoSupport就是用于编写基于JDBC的DAO类的基类,我们只需让自己的DAO类继承它即可(下面是使用步骤):
1、让自己的DAO类继承JdbcDaoSupport,例如
public class JdbcRantDao extends JdbcDaoSupport......{.......}
2、接下来声明自己的DAO,并注入jdbcTemplate(不需要DAO里面定义jdbcTemplate属性)或直接将数据源注入(更简单,这样就不需要在Spring里声明jdbcTemplate Bean了)
<bean id="rantDao" class="com.roadrantz......JdbcRantDao">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
【注:这样的话就不需要在自己的DAO里定义jdbcTemplate这个属性了,因为JdbcDaoSupport类里有这个属性,继承过来即可。但还需要在Spring里声明jdbcTemplate Bean】;
或
<bean id="rantDao" class="com.roadrantz......JdbcRantDao">
<property name="dataSource" ref="dataSource"/>
</bean>
【注:当JdbcDao的dataSource属性被设置后,它会在内部创建一个JdbcTemplate实例,这样我们就不需要自己再Spring里明确声明一个JdbcTemplate Bean了,并且自己的Dao类里也不需要定义JdbcTemplate属性了。这种使用方式比较简单实用】
3、利用JdbcDaoSupport的getJdbcTemplate()方法能方便的访问JdbcTemplate,然后用它操作SQL语句操作数据库。具体JdbcTemplate操作SQL语句及各种增删改查操作示例见书上。
注意:上面是Spring对Jdbc的Dao支持类,使用示例及配置,另外两个NamedParameterJdbcDaoSupport、SimpleJdbcDaoSupport的配置基本相同,只需将Dao继承的类名修改下即可,例如getNamedParameterJdbcTemplate()方法即可获得NamedParameterJdbcTemplate的一个实例。具体操作SQL的使用方式将书上。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第三部分内容:Spring对ORM框架的支持,重点讲解Spring里继承Hibernate:
选择Hibernate版本:Hibernate2和Hibernate3使用中最重要一点区别是Hibernate3支持注解,Hibernate2不支持。大部分情况下还是使用Hibernate3。
与Hibernate进行狡猾的主要接口是org.hibernat.session,这个session接口提供了基本的数据访问功能,比如从数据库保存、更新、和加载对象,通过它,程序能执行任何持久功能。获得Hibernate Session对象引用的标准方式是实现Hibernate的SessionFactory接口。SessionFactory负责打开、关闭、和管理Hibernate Session,以及其他一些功能。
就像JdbcTemplate把JDBC的繁琐工作抽离出去一样,Spring的HibernateTemplate在Hibernate Session之上提供了一个抽象层,其主要功能是简化打开和关闭Hibernate会话,并且把Hibernate的特定异常转化为表Spring ORM异常之一。
下面是Spring集成Hibernate的步骤:
1、声明hibernateTemplate Bean并注入sessionFactory:
<class id="hibernateTemplate" class="org.springframework.......HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</class>
2、声明SessionFactory Bean,sessionFactory属性被设置为org.hibernate.SessionFactory实现的一个引用,这里提供几种可选的声明方式:
1)、使用Spring的LocalSessionFactoryBean:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalLocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources"><!--映射文件-->
<list>
<value>com/roadrantz/domain/Rant.hbm.xml</value>
.................
</list>
<property/>
<property name="hibernateProperties"><!--hibernate配置属性-->
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
</bean>
2)、我们可以选择使用注解把持久元数据标记到域对象。对于基于注解的Hibernate来说,Spring的AnnotationSessionFactory和上面的LocalSessionFactory Bean很像,只是它基于一个或多个域类里的注解和创建SessionFactory:
<bean id="sessionFactory" class=".............AnnotationSessionFactory">
<property name="dataSource" ....../>
<property name="annotatedClasses"><!--包含一个或多个包含持久注解的类-->
<list>
<value>com.roadrantz.domain.Rant</value>
..............
</list>
</property>
<property name="hibernateProperties">......</property>
</bean>
3、然后在自己的Dao类里面定义属性,例如:
private HibernateTemplate hibernateTemplate;并定义此属性的set方法。
4、声明Dao Bean,并注入hibernateTemplate属性:
<bean id="rantDao" class="com.roadrantz........HibernateRantDao">
<property name="hibernateTemplate" ref="hibernateTemplate">
</bean>
5、接下来就是使用hibernateTemplate操作数据库了,详细操作方式看书,。
例如:hibernateTemplate.saveOrUpdate(velicle);
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第四部分内容:Spring对Hibernate的DAO支持类:
为了让上面讲解的一部分的事情简单一些,Spring提供了HibernateDaoSupport,它能够让我们把会话工厂Bean直接装配到DAO类,会创建一个HibernateTemplate供DAO使用。
下面是使用步骤:
1、让自己的Dao类继承HibernateDaoSupport。例如:
public clss HibernateRantDao extends HibernateDaoSupport{....................}
2、在Dao里面使用getHibernteTemplate()方法获得由HibernateDaoSupport创建的HibernateTemplate(在Dao里面不需要自己定义HibernateTemplate属性了),并用它来操纵数据库。
例如:
public void saveMotorist(Motorist motorist) {
getHibernateTemplate().saveOrUpdate(motorist);
}
3、声明Dao Bean,并把SessionFactory Bean装配到Dao Bean的SessionFactory属性:
<bean id="rantDao" class="com.roadrantz.dao.hibernate.HibernateRantDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
【HibernateRantdao的新父类HibernateDaoSupport需要一个Hibernate SessionFactory,这样它才能在内部生成一个HibernateTemplate,所以需要把sessionFactory Bean注入到里面】
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面讲解第五部分内容:Hibernate3上下文会话(解决Hibernate与Spring的耦合问题):
HibernateTemplate的缺点是具有一定的侵入性,当我们使用Spring的HibernateTemplate时(无论直接使用还是通过HibernateDaoSupport),HibernateRantDao类都被耦合到Spring API,而Hibernate3的上下文会话可以解决这一问题。
下面是Hibernate3的上下文会话使用方式:
1、在自己的Dao里面定义SessionFactory sessionFactory属性,并定义此属性set方法。
2、配置自己的Dao Bean,并注入sessionFactory属性:
<bean id="rantDao" class="com.roadrantz.......HibernateRantDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
【在这个新的HibernateRantDao里,sessionFactory属性注入了一个sessionFactory引用,由于sessionFactory来自于Hibernate API,所以HibernateRantDao不再依赖于Spring框架,现在我们就要使用sessionFactory来处理当前会话,而不是使用HibernateTemplate来执行持久操作。】
3、使用SessionFactory来处理当前会话:
public void saveRant(Rant rant) {
sessionFactory.getCurrantSession().saveOrUpdate(rant);
}
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 614Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1631我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1428String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1173今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 454讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 968emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 439BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5761、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2960http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2299有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 1008spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 701java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 514诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 503http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 470Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 400要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 487spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1074需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 868按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 487912345
相关推荐
Spring框架是Java开发中广泛使用的轻量级框架,...通过这些知识点,我们可以高效地在Spring应用中实现与数据库的交互,提高开发效率。在实际项目中,还可以结合Spring Data JPA或MyBatis等ORM框架进一步提升开发体验。
**JDBC (Java Database Connectivity)** 是Java中用于与数据库交互的标准API。Spring框架通过提供高级的JDBC支持,简化了数据库访问代码的编写。 1. **数据源配置**:Spring允许配置数据源,这样就封装了数据库连接...
这在处理跨系统数据交互、数据隔离或者不同数据源的场景下非常有用。"spring多数据库"项目就是针对这种需求而设计的,旨在提供一个标准的Spring项目结构,方便开发人员进行多个数据库之间的切换查询。 首先,Spring...
在与底层数据库交互时,SpringMVC通常结合Spring Data JPA或MyBatis等持久层框架一起工作,以实现高效的数据操作。下面我们将深入探讨SpringMVC与数据库交互的核心概念和技术。 1. **DispatcherServlet**:...
在这个简单的例子中,我们将探讨如何利用Spring Security与数据库进行交互来实现用户认证和授权。 首先,`applicationContext-security.xml`是Spring Security的配置文件,它定义了安全相关的bean和规则。这个文件...
为了在SpringCloud服务中使用这个数据库连接,你可能还需要配置Ribbon或Feign客户端,以在微服务间进行数据交互。Ribbon是客户端负载均衡器,Feign是一个声明式HTTP客户端。配置它们可以使你的服务通过服务名而不是...
在Spring框架中,数据库访问是核心功能之一,它提供了丰富的工具和API来简化与数据库的交互。本篇文章将深入探讨Spring中的数据库异常处理机制,帮助开发者更好地理解和处理在数据库操作中可能遇到的问题。 首先,...
总结来说,Spring Roo是一个强大的工具,能够帮助开发者快速构建符合最佳实践的Java应用,特别是在处理与数据库交互的场景下。通过使用Roo,你可以节省大量时间,专注于业务逻辑,而不是基础架构。如果你想要深入...
在处理与数据库交互方面,Spring Security提供了更强大的支持,包括长期的remember-me功能和基于数据库的角色与用户管理API。 24.2. 目标 在原有应用中,用户信息和资源访问控制已经在数据库中管理。目标是将现有...
首先,Spring框架提供了强大的数据访问抽象层,使得开发者可以轻松地与各种数据库交互,包括关系型数据库如MySQL、Oracle,以及非关系型数据库如MongoDB、Cassandra等。Spring Data项目是这一抽象层的核心,它为多种...
在Spring中,JDBC(Java Database Connectivity)驱动程序是用于与各种数据库进行交互的重要组件。本参考手册将深入探讨Spring Framework如何整合和使用JDBC驱动,以及在实际开发中的最佳实践。 1. **JDBC概述** ...
在这个"spring连接数据库实例"中,我们将探讨Spring如何与数据库进行交互,以及它在实际项目中的应用。 1. **Spring JDBC模块** Spring 提供了JDBC抽象层,简化了数据库操作,避免了繁琐的JDBC代码和资源管理。...
**Spring Security数据库认证实例(dao认证)** Spring Security是一个强大且高度可定制的身份验证和访问控制框架...这个实例对于理解Spring Security如何与数据库交互非常有帮助,也为构建更复杂的安全系统奠定了基础。
这个简单的示例为初学者提供了一个了解Spring MVC和Spring Security交互的基础平台,有助于理解这两个框架在实际项目中的作用和集成方式。通过深入研究和实践,可以进一步提升Web应用的安全性和可维护性。
Spring Security可以通过集成JDBC或使用Spring Data JPA等方式与数据库交互,存储用户、角色和权限。这通常涉及到自定义UserDetailsService和AuthoritiesPopulator接口的实现,以从数据库中加载用户信息和权限。 接...
标题 "spring boot做的显示数据库的数据" 暗示了我们正在讨论如何使用Spring Boot框架来展示从MySQL数据库...通过这个实践,开发者可以深入理解Spring Boot如何与数据库交互,以及如何构建简单的数据驱动的应用程序。
2. 创建一个服务类(Service),使用Spring提供的模板方法与数据库交互。 3. 创建一个控制器(Controller),该控制器会调用服务类的方法,将返回的对象集合转换为JSON。 4. 使用Jackson库的`ObjectMapper`类将Java...
Hibernate通过持久化对象与数据库交互,执行增删改查操作;而Spring则作为整体的协调者,管理所有组件的生命周期,提供事务管理和数据源配置,使得整个应用的架构更加松耦合。 总的来说,SSH框架的组合使用,为...
开发者可能使用了常见的Web框架(如Django、Express或Spring Boot)来实现这些功能,并且数据库可能是MySQL、PostgreSQL或者NoSQL数据库如MongoDB。 综上所述,实现图片与数据库的交互是一个综合性的任务,涉及前端...
3. **JdbcPagingItemReader和JdbcBatchItemWriter**:这两个类分别用于分页读取数据和批量写入数据,是Spring-Batch与数据库交互的核心。 4. **SqlServerPagingQueryProvider和OraclePagingQueryProvider**:如果...