0 0

Hibernate AnnotationSessionFactoryBean 获取sessionFactory问题0


下面的代码中,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) {
		 
	}

}

2013年6月19日 13:47

1个答案 按时间排序 按投票排序

0 0

采纳的答案

你需要先调用afterPropertiesSet 再调用getObject

2013年6月19日 13:58

相关推荐

    org.springframework.orm.hibernate3.LocalSessionFactoryBean

    这个问题通常发生在尝试通过Spring管理Hibernate SessionFactory的创建时,而Spring无法找到对应的类实现。 #### 二、核心概念 1. **Spring ORM**:Spring框架提供了一组ORM(Object-Relational Mapping)支持服务...

    让Hibernate同时支持xml和注解两种映射方式

    1. 创建一个新的Java类,例如命名为`CombinedSessionFactoryBean`,让它继承自`org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean`。 2. 在这个新的类中,我们需要覆写或添加方法,以便...

    Hibernate-Annotation中文教程.docx

    2.如果您正在使用 Spring 框架,可以使用 AnnotationSessionFactoryBean 类轻松建立一个基于注释的 Hibernate 会话工厂。 Hibernate 注解的应用场景: * 在 Java 项目中使用 Hibernate 持久性框架时。 * 需要简化 ...

    Struts2+Hibernate+Spring项目小结――Hibernate部分

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>....bean.AddressBook <!-- 其他属性 --> ``` 这样,实体类如`AddressBook`...

    hibernate中的注释的几种配置方式

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>xxx.xxx.xxx.domain.Account ``` - **LocalSessionFactoryBean**:同样是...

    Spring+Hibernate整合

    - **配置SessionFactory**:接着需要配置Hibernate的SessionFactory,通过Spring的`LocalSessionFactoryBean`或`AnnotationSessionFactoryBean`来实现。 - **配置事务管理器**:使用Spring的`...

    Hibernate Annotation笔记

    或者,如果你使用Spring框架来管理Hibernate,则可以使用`AnnotationSessionFactoryBean`来配置SessionFactory: ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate5....

    中文分词检索IKAnalyzer3.2.3Stable+hibernate-search3.4.0.Final

    - **Session Factory配置**:`<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">`定义了Spring管理的Hibernate Session Factory。 - **Hibernate ...

    hibernate注解

    此时,可以使用`AnnotationSessionFactoryBean`来配置SessionFactory,这样就可以在Spring环境中无缝地使用Hibernate注解。 ```xml <!-- Spring 配置文件示例 --> <bean id="sessionFactory" class="org.spring...

    SpringMVC+Hibernate全注解整合

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.org.entity</value> <prop key="hibernate....

    Spring集成Struts、Hibernate.pdf

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.example.entity.Book</value> <prop key="hibernate.dialect">org....

    Hibernate 注解

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> ``` 接下来,我们关注POJO类的声明。在XML配置中,我们需要为每个类编写对应的`.hbm.xml`...

    SSH框架整合

    通过Spring的`AnnotationSessionFactoryBean`配置SessionFactory,这样可以在Spring容器中管理Hibernate的SessionFactory。设置数据源、映射的实体类或者映射的包,以及Hibernate的属性。 ```xml <bean id="...

    struts2+hibernate+spring

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <!--bean--> <value>.bean.AddressBook . <prop key="hibernate.dialect">...

    spring2.5+hibernate3.2+struts2.0组合配置说明

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect ...

    ssh2连接多库注解方式

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com ``` 在这段代码中,我们首先定义了一个名为`dataSource`的Bean,它使用的是...

    struts2.3+hibernate3.6+spring3.1整合的纯xml配置的小项目

    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> org.whvcse.model.Userinfo ...

    基于annotation 的ssh整合(2)

    通过引入Spring的支持,配置Hibernate的SessionFactory以及集成Struts框架,我们可以实现一个灵活且易于维护的项目架构。这种整合不仅减少了XML配置的工作量,还提高了代码的可读性和可维护性。对于初学者来说,深入...

    SSH项目搭建步骤

    - 可以选择将 Hibernate 和 Spring 的配置合并,通过 Spring 的 `LocalSessionFactoryBean` 或 `AnnotationSessionFactoryBean` 来管理 Hibernate 的 SessionFactory。 6. **配置启动环境** - 配置 `web.xml`,...

    项目框架SSH2技术说明文档

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <!-- 设置命名策略 --> <!-- 其他相关属性配置 --> ``` 1.1.2 Hibernate注解的使用 ...

Global site tag (gtag.js) - Google Analytics