下面的代码中,getSessionFactory方法中a.getObject()返回的值为null.请问是应该怎么解决啊???
@SuppressWarnings("unchecked")
@Configuration
@Component
public class AppConfig implements ServletConfigAware,ServletContextAware{
//hibernate(读取配置文件中的值)
private @Value("${hibernate.dialect}") String dialect;
private @Value("${hibernate.show_sql}") String showSql;
private @Value("${hibernate.hbm2ddl.auto}") String hbm2ddl;
private @Value("${hibernate.default_schema}") String default_schema;
private @Value("${hibernate.max_fetch_depth}") String max_fetch_depth;
private @Value("${hibernate.query.factory_class}")String query_factory_class;
//jdbc
private @Value("${jdbc.driverClass}") String driverClass;
private @Value("${jdbc.url}") String jdbcUrl;
private @Value("${jdbc.user}") String user;
private @Value("${jdbc.password}") String password;
//c3p0
private @Value("${c3p0.minPoolSize}") int minPoolSize;
private @Value("${c3p0.maxPoolSize}") int maxPoolSize;
private @Value("${c3p0.initialPoolSize}") int initialPoolSize;
private @Value("${c3p0.maxIdleTime}") int maxIdleTime;
private @Value("${c3p0.maxStatements}") int maxStatements;
private @Value("${c3p0.acquireIncrement}") int acquireIncrement;
private @Value("${c3p0.idleConnectionTestPeriod}") int idleConnectionTestPeriod;
private @Value("${c3p0.acquireRetryAttempts}") int acquireRetryAttempts;
private @Value("${c3p0.breakAfterAcquireFailure}") boolean breakAfterAcquireFailure;
//mail
private @Value("${mail.host}") String host;
private @Value("${mail.username}") String username;
private @Value("${mail.password}") String mailpwd;
private @Value("${mail.smtp.auth}") String smtpAuth;
private @Value("${mail.smtp.timeout}") String smtpTimeout;
private @Value("${system.hibernate.models}") String models; //hibernate扫描的包
private ApplicationContext applicationContext;
public ApplicationContext getApplicationContext() {
return applicationContext;
}
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
//数据源
@Bean(name="dataSource")
public DataSource getDataSource(){
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setJdbcUrl(jdbcUrl);
try {
cpds.setDriverClass(driverClass);
} catch (PropertyVetoException e) {
e.printStackTrace();
}
cpds.setUser(user);
cpds.setPassword(password);
//连接池中保留的最小连接数
cpds.setMinPoolSize(minPoolSize);
//连接池中保留的最大连接数。Default: 15
cpds.setMaxPoolSize(maxPoolSize);
//初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3
cpds.setInitialPoolSize(initialPoolSize);
//最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
cpds.setMaxIdleTime(maxIdleTime);
//当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3
cpds.setAcquireIncrement(acquireIncrement);
//每60秒检查所有连接池中的空闲连接。Default: 0
cpds.setIdleConnectionTestPeriod(idleConnectionTestPeriod);
//定义在从数据库获取新连接失败后重复尝试的次数。Default: 30
cpds.setAcquireRetryAttempts(acquireRetryAttempts);
//获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
cpds.setBreakAfterAcquireFailure(breakAfterAcquireFailure);
cpds.setMaxStatements(maxStatements);
return cpds;
}
//Hibernate - SessionFactory
@Bean(name="sessionFactory")
@DependsOn("dataSource")
public SessionFactory getSessionFactory() throws Exception {
Properties properties = new Properties();
properties.put("hibernate.dialect", dialect);
/**
properties.put("hibernate.show_sql", showSql);
properties.put("hibernate.hbm2ddl.auto", hbm2ddl);
properties.put("hibernate.max_fetch_depth", max_fetch_depth);
properties.put("hibernate.temp.use_jdbc_metadata_defaults", "false");
properties.put("hibernate.jdbc.fetch_size", "50");
properties.put("hibernate.jdbc.batch_size", "25"); */
AnnotationSessionFactoryBean a = new AnnotationSessionFactoryBean();
a.setDataSource(this.getDataSource());
a.setHibernateProperties(properties);
a.setPackagesToScan(models.split(","));
SessionFactory sessionFactory = a.getObject();
System.out.println("dataSource = "+this.getDataSource());
System.out.println("sessionFactory = "+sessionFactory);
return sessionFactory;
}
public void setServletConfig(ServletConfig config) {
}
@Override
public void setServletContext(ServletContext arg0) {
}
}
相关推荐
这个问题通常发生在尝试通过Spring管理Hibernate SessionFactory的创建时,而Spring无法找到对应的类实现。 #### 二、核心概念 1. **Spring ORM**:Spring框架提供了一组ORM(Object-Relational Mapping)支持服务...
1. 创建一个新的Java类,例如命名为`CombinedSessionFactoryBean`,让它继承自`org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean`。 2. 在这个新的类中,我们需要覆写或添加方法,以便...
2.如果您正在使用 Spring 框架,可以使用 AnnotationSessionFactoryBean 类轻松建立一个基于注释的 Hibernate 会话工厂。 Hibernate 注解的应用场景: * 在 Java 项目中使用 Hibernate 持久性框架时。 * 需要简化 ...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>....bean.AddressBook <!-- 其他属性 --> ``` 这样,实体类如`AddressBook`...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>xxx.xxx.xxx.domain.Account ``` - **LocalSessionFactoryBean**:同样是...
- **配置SessionFactory**:接着需要配置Hibernate的SessionFactory,通过Spring的`LocalSessionFactoryBean`或`AnnotationSessionFactoryBean`来实现。 - **配置事务管理器**:使用Spring的`...
或者,如果你使用Spring框架来管理Hibernate,则可以使用`AnnotationSessionFactoryBean`来配置SessionFactory: ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate5....
- **Session Factory配置**:`<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">`定义了Spring管理的Hibernate Session Factory。 - **Hibernate ...
此时,可以使用`AnnotationSessionFactoryBean`来配置SessionFactory,这样就可以在Spring环境中无缝地使用Hibernate注解。 ```xml <!-- Spring 配置文件示例 --> <bean id="sessionFactory" class="org.spring...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.org.entity</value> <prop key="hibernate....
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.example.entity.Book</value> <prop key="hibernate.dialect">org....
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> ``` 接下来,我们关注POJO类的声明。在XML配置中,我们需要为每个类编写对应的`.hbm.xml`...
通过Spring的`AnnotationSessionFactoryBean`配置SessionFactory,这样可以在Spring容器中管理Hibernate的SessionFactory。设置数据源、映射的实体类或者映射的包,以及Hibernate的属性。 ```xml <bean id="...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <!--bean--> <value>.bean.AddressBook . <prop key="hibernate.dialect">...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect ...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com ``` 在这段代码中,我们首先定义了一个名为`dataSource`的Bean,它使用的是...
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> org.whvcse.model.Userinfo ...
通过引入Spring的支持,配置Hibernate的SessionFactory以及集成Struts框架,我们可以实现一个灵活且易于维护的项目架构。这种整合不仅减少了XML配置的工作量,还提高了代码的可读性和可维护性。对于初学者来说,深入...
- 可以选择将 Hibernate 和 Spring 的配置合并,通过 Spring 的 `LocalSessionFactoryBean` 或 `AnnotationSessionFactoryBean` 来管理 Hibernate 的 SessionFactory。 6. **配置启动环境** - 配置 `web.xml`,...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <!-- 设置命名策略 --> <!-- 其他相关属性配置 --> ``` 1.1.2 Hibernate注解的使用 ...