hibernate配置文件整合到Spring配置文件如何获取sessionfactory

qq359224897 2015-06-24 09:05:25
如果hibernate配置文件还在的话就是Configuration.configure().buildSessionFactory()加载文件中的配置(数据源等),
当该配置整合进applicationContext.xml后该怎么获取,不使用getHibernateTemplate的情况下,求教各位前辈!
...全文
371 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq359224897 2015-07-03
  • 打赏
  • 举报
回复
引用 13 楼 tangyanbo1110 的回复:
[quote=引用 12 楼 qq359224897 的回复:] [quote=引用 10 楼 tangyanbo1110 的回复:] public static void setSessionFactory(SessionFactory sessionFactory) { DoubiDao.sessionFactory = sessionFactory; } 这个不能是静态方法 private static SessionFactory sessionFactory; 而你这个真没必要搞成静态的,spring是通过调用对象的set方法注入的, 你这静态方法,怎么能行
我把这两个地方的静态去掉了,结果这里出现空指针异常了 Session session =sessionFactory.openSession();[/quote] 那肯定是你初始化dao的方式错了,难道你是new dao? 从spring容器中获取dao实例,应该没问题的[/quote] 果然如此··多谢了 写测试类没注意··
qq359224897 2015-07-01
  • 打赏
  • 举报
回复
引用 8 楼 mh_ma 的回复:
[quote=引用 7 楼 qq359224897 的回复:] 原来是指这个,这个配置一早就有了,现在的问题是No setter found for property 'sessionFactory' in class...,实际是写了set方法的,用继承HibernateDaoSupport的方法没问题,就是想用知道用sessionFactory不行的原因在哪
你的类怎么写的,贴出来[/quote] package test.dao; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import hubin.daointerface.IDoubiTest; import hubin.vo.Doubi; public class DoubiDao implements IDoubiTest { private static SessionFactory sessionFactory; //static { //try{ //AnnotationConfiguration config = new AnnotationConfiguration(); // sessionFactory = config.buildSessionFactory(); // }catch(Exception e){ // e.printStackTrace(); // } // } // /**static { try{ Resource resource=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(resource); sessionFactory = (SessionFactory)factory.getBean("sessionFactory"); }catch(Exception e){ e.printStackTrace(); } }**/ /** * 保存对象 * @throws Exception */ public void savedoubi(Doubi db){ Session session = sessionFactory.openSession(); Transaction tx = null; try{ tx=session.beginTransaction(); session.save(db); tx.commit(); }catch(Exception e){ if(tx!=null){ tx.rollback(); } e.printStackTrace(); } finally{ session.close(); } } /** * 删除所有对象 */ public void delalldoubi(){ Session session = sessionFactory.openSession(); Transaction tx=null; try{ tx=session.beginTransaction(); session.delete("from Doubi as d"); tx.commit(); }catch(Exception e){ if(tx!=null){ tx.rollback(); } e.printStackTrace(); } finally{ session.close(); } } /** * 查找所有对象 */ public List findalldoubi(){ Session session =sessionFactory.openSession(); Transaction tx=null; tx=session.beginTransaction(); try{ Query query=session.createQuery("from Doubi as d"); List doubilist=query.list(); if(doubilist!=null&&doubilist.size()>0){ Iterator it =doubilist.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } tx.commit(); }catch(Exception e){ if(tx!=null){ tx.rollback(); } e.printStackTrace(); } finally{ session.flush(); } return null; } public static void setSessionFactory(SessionFactory sessionFactory) { DoubiDao.sessionFactory = sessionFactory; } }
风过无痕1110 2015-07-01
  • 打赏
  • 举报
回复
引用 12 楼 qq359224897 的回复:
[quote=引用 10 楼 tangyanbo1110 的回复:] public static void setSessionFactory(SessionFactory sessionFactory) { DoubiDao.sessionFactory = sessionFactory; } 这个不能是静态方法 private static SessionFactory sessionFactory; 而你这个真没必要搞成静态的,spring是通过调用对象的set方法注入的, 你这静态方法,怎么能行
我把这两个地方的静态去掉了,结果这里出现空指针异常了 Session session =sessionFactory.openSession();[/quote] 那肯定是你初始化dao的方式错了,难道你是new dao? 从spring容器中获取dao实例,应该没问题的
王子文龙 2015-07-01
  • 打赏
  • 举报
回复
引用 7 楼 qq359224897 的回复:
原来是指这个,这个配置一早就有了,现在的问题是No setter found for property 'sessionFactory' in class...,实际是写了set方法的,用继承HibernateDaoSupport的方法没问题,就是想用知道用sessionFactory不行的原因在哪
你的类怎么写的,贴出来
qq359224897 2015-07-01
  • 打赏
  • 举报
回复
引用 10 楼 tangyanbo1110 的回复:
public static void setSessionFactory(SessionFactory sessionFactory) { DoubiDao.sessionFactory = sessionFactory; } 这个不能是静态方法 private static SessionFactory sessionFactory; 而你这个真没必要搞成静态的,spring是通过调用对象的set方法注入的, 你这静态方法,怎么能行
我把这两个地方的静态去掉了,结果这里出现空指针异常了 Session session =sessionFactory.openSession();
风过无痕1110 2015-07-01
  • 打赏
  • 举报
回复
public static void setSessionFactory(SessionFactory sessionFactory) { DoubiDao.sessionFactory = sessionFactory; } 这个不能是静态方法 private static SessionFactory sessionFactory; 而你这个真没必要搞成静态的,spring是通过调用对象的set方法注入的, 你这静态方法,怎么能行
X元素 2015-06-29
  • 打赏
  • 举报
回复
引用 5 楼 qq359224897 的回复:
[quote=引用 2 楼 u011619071 的回复:] 整合的话,你的sessionfactory至少要注入到某些类下吧?在对应的那个类下get就是了。
怎么get求指教·· <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.Show_sql"> true </prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>test/vo/CwManager.hbm.xml</value></list> </property> <property name="annotatedClasses"> <list> <value>test.vo.user</value></list> </property></bean>[/quote]

//  TestManager get set sessionFactory ,
 <bean id=“testManager” class='x.x.x.TestManager' > 
 <property name="sessionFactory" ref="sessionFactory"/>
<bean/>
qq359224897 2015-06-29
  • 打赏
  • 举报
回复
引用 2 楼 u011619071 的回复:
整合的话,你的sessionfactory至少要注入到某些类下吧?在对应的那个类下get就是了。
怎么get求指教·· <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.Show_sql"> true </prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>test/vo/CwManager.hbm.xml</value></list> </property> <property name="annotatedClasses"> <list> <value>test.vo.user</value></list> </property></bean>
qq359224897 2015-06-29
  • 打赏
  • 举报
回复
引用 1 楼 mh_ma 的回复:
你整合spring,你不需要写sessionfactory的吗
这是我的sessionfactory <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.Show_sql"> true </prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>test/vo/CwManager.hbm.xml</value></list> </property> <property name="annotatedClasses"> <list> <value>test.vo.user</value></list> </property></bean>
qq359224897 2015-06-29
  • 打赏
  • 举报
回复
引用 6 楼 u011619071 的回复:
[quote=引用 5 楼 qq359224897 的回复:] [quote=引用 2 楼 u011619071 的回复:] 整合的话,你的sessionfactory至少要注入到某些类下吧?在对应的那个类下get就是了。
怎么get求指教·· <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.Show_sql"> true </prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>test/vo/CwManager.hbm.xml</value></list> </property> <property name="annotatedClasses"> <list> <value>test.vo.user</value></list> </property></bean>[/quote]

//  TestManager get set sessionFactory ,
 <bean id=“testManager” class='x.x.x.TestManager' > 
 <property name="sessionFactory" ref="sessionFactory"/>
<bean/>
[/quote]原来是指这个,这个配置一早就有了,现在的问题是No setter found for property 'sessionFactory' in class...,实际是写了set方法的,用继承HibernateDaoSupport的方法没问题,就是想用知道用sessionFactory不行的原因在哪
王子文龙 2015-06-25
  • 打赏
  • 举报
回复
引用 1 楼 mh_ma 的回复:
你整合spring,你不需要写sessionfactory的吗
你也可以写一个类继承ApplicationContextAware

public class SpringContextUtils implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    public void setApplicationContext(ApplicationContext _applicationContext) throws BeansException {
        applicationContext = _applicationContext;
    }

    /**
     *  可以得到spring管理的bean 
     */
    public static Object getBean(String beanName) {
        return applicationContext.getBean(beanName);
    }
通过这个类就可以得到spirng管理的所有bean了
X元素 2015-06-25
  • 打赏
  • 举报
回复
整合的话,你的sessionfactory至少要注入到某些类下吧?在对应的那个类下get就是了。
王子文龙 2015-06-25
  • 打赏
  • 举报
回复
你整合spring,你不需要写sessionfactory的吗

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧