今天尝试了一下使用Annotation整合Spring2.5和Hibernate3.3,在使用HibernateDaoSupport的时候才想起Annotation必须是加在源码上,但是setSessionFactory被标记为final,那继承HibernateDaoSupport后就不能重写setSessionFactory方法来实现使用Annotation的注入。代码段如下:
1: /**
2: * Set the Hibernate SessionFactory to be used by this DAO.
3: * Will automatically create a HibernateTemplate for the given SessionFactory.
4: * @see #createHibernateTemplate
5: * @see #setHibernateTemplate
6: */
7: public final void setSessionFactory(SessionFactory sessionFactory) {
8: if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
9: this.hibernateTemplate = createHibernateTemplate(sessionFactory);
10: }
11: }
苦思冥想之际,想到一个可以暂时解决问题的办法。代码段如下:
1: @Resource(name="sessionFactory")
2: public void setBaseDaoSessionFactory(SessionFactory sessionFactory) {
3: super.setSessionFactory(sessionFactory);
4: }
在子类中添加一个新的方法来调用父类的setSessionFactory方法,然后把sessionFactory注入,OK!
分享到:
相关推荐
5. **整合Spring和Hibernate**:使用Spring的HibernateDaoSupport类或JpaTemplate来简化DAO层的代码,通过Spring管理SessionFactory或EntityManagerFactory。 6. **测试和运行**:编写JUnit测试,验证各个组件是否...
在这个例子中,`DepartmentDapImpl` 实现了 IDepartmentDao 接口,`setSessionFactory()` 方法接收由 Spring 容器注入的 SessionFactory 实例。在 `addDepartment()` 方法中,我们通过 SessionFactory 打开 Session...
在上述代码中,`@Repository`注解标记了DAO实现类为Spring Bean,`@Resource`注解注入SessionFactory。`getSession()`方法获取当前Session,`beginTransaction()`和`commit()`分别用于开始和提交事务,而`save()`...
Spring框架则是一个全面的后端解决方案,包括依赖注入、AOP(面向切面编程)、事务管理等,而Hibernate则是一个优秀的ORM(对象关系映射)框架,负责数据库操作和对象之间的转换。 整合Struts2和Spring,首先需要在...
Spring的`LocalSessionFactoryBean`用于创建SessionFactory,而`<tx:annotation-driven>`标签启用事务管理。 3. **Hibernate配置**:在Hibernate的配置文件(如`hibernate.cfg.xml`)中,我们需要指定数据库连接...
**Spring** 是一个全面的Java企业级应用开发框架,它以依赖注入(DI)和面向切面编程(AOP)为核心,提供事务管理、数据访问集成、邮件服务等功能。Spring3.1版本引入了更多改进,如对Java配置的支持,使配置更简洁...
14. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 15. 16. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 17. <bean class="org....
`HibernateTemplate`可以直接注入到Service类中,而`HibernateDaoSupport`需要我们继承,并在子类中注入`SessionFactory`。 - 使用`HibernateTemplate`示例: ```java public class UserService { private ...
- 使用Spring的HibernateTemplate和HibernateDaoSupport类。 - 使用LocalSessionFactoryBean来配置SessionFactory。 - 使用@Transaction注解进行声明式事务管理。 36、列举spring支持的事务管理类型。 Spring支持的...
通过@Autowired或XML配置,可以将SessionFactory注入到DAO或Service类中,实现依赖注入。 6. **Querying与Criteria API**:Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询方式,它们比原生...
创建一个继承自`HibernateDaoSupport`的DAO接口和实现类,使用`@Autowired`注解注入SessionFactory。在这个实现类中,你可以编写查询、更新等操作。 ```java public interface UserRepository { User findById...
- **IOC与DI的概念**:IOC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是Spring框架的核心特性之一。 - **IOC**:指将对象创建和对象之间的依赖关系转移给框架来处理。 - **DI**:...
2. **Spring配置**:创建一个或多个XML配置文件(如applicationContext.xml),在这里声明Spring的bean,包括DataSource、SessionFactory、HibernateTemplate或HibernateDaoSupport等。同时,可以配置事务管理器以...
- **DAO(Data Access Object)**:Spring通过`HibernateTemplate`或`HibernateDaoSupport`简化DAO层的编写,提供事务封装。 4. **Spring JDBC与Hibernate的比较** - **灵活性**:Hibernate提供更高级别的对象...
在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,成为了企业级应用的首选。而Hibernate作为一款优秀的对象关系映射(ORM)工具,极大地简化了数据库操作。当这两者结合时,可以构建出高效、灵活的...
数据访问对象(DAO)应继承自`HibernateDaoSupport`或使用Spring的`@Repository`注解,以便利用Spring提供的事务管理和资源管理。业务逻辑层(BLL)和Action则分别处理业务逻辑和用户请求,它们依赖于DAO层提供的...
这里,`<tx:annotation-driven>`元素告诉Spring要启用基于注解的事务管理,指定`transaction-manager`属性为事务管理器的bean ID。 2. **事务注解** 在Spring3中,我们不再需要像以前那样在XML配置文件中定义事务...
Spring的核心功能包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)、数据访问/集成、事务管理和消息传递等。 #### 二、Spring的核心特性 **1. 依赖注入(DI)** 依赖...