关于spring 的配置文件有个小疑问。

说真的,今天上午才接触spring,对里面的配置文件很不理解。下面的标签的配法是spring配置文件中的,有哪位老大能帮我祥细说下。
1,  sessionFactory是从哪来的?是从hibernate.cfg.xml读取获得的吗?
2, 然后把sessionFactory注入到transactionManager中有什么用呢?那TransactionManager又是用来做什么的?
3, 为什么每个dao接口的实现类里面都要注入一个sessionFactory?比如下面的statequerydao bean.

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
</bean>
- <!-- 事务管理器
-->
- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory">
<ref bean="sessionFactory" />

<bean id="statequerydao" class="com.car.dao.impl.personalworkstage.StateQueryDaoImpl">
- <property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</property>
</bean>
把hibernate.cfg.xml 注入到org.springframework.orm.hibernate3.LocalSessionFactoryBean 又有什么用了?

1,  sessionFactory是从哪来的? 你看产生sessionFactory 后面那个标签有个class,就是那个类,其实就是spring整合Hibernate的时候它自己写了个类来产生SessionFactory,你知道SessionFactory是干嘛的吗,这个是Hibernate中的,应该学过吧
Hibernate中编程有如下步骤、、、
Configuration conf = new Configuration();
conf.configure();//读取配置
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();//在执行数据操作之前要开启事务
session.save(new User());//("这里写你要保存的类");
tx.commit();//提交事务

看了这段代码之后你就应该对上面的问题有了解,
2 、TransactionManager就是用来管理事务的,所以需要讲SessionFactory注入进去
3、你在dao里面应该是写对数据的操作吧,应该是增删改查,既然是这样的话,你要得到session,既然要想得到session,那你得从SessionFactory里面得到,所以得将SessionFactory注入,注意看看我上面的这段代码吧、、、、
在学习整合之前你至少应该要会Hibernate,不然你不知道这些东西是干嘛的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-27
你好,关于hibernate的一些问题:
SessionFactory 是在你加入hibernate的时候会生成一个HibernateSessionFactory的类SessionFactory是在这个类中配置的,你可以仔细的看看这个类,另外:SessionFactory是用来建立session 对象的 session 是用来保存一个数据库连接的.可以用来执行CRUD操作,在hibernate中session 是表示对connection 对象的封装,表示一个数据库的连接和CRUD操作:

tiansaction 是表示事务处理的功能 是通过 session 的 beginTransaction 方法建立的 TransactionManager 是表示事务的处理 在处理事务的时候必须传入一个数据库连接连接
不是每个接口都要注入sessionFactory 的,可以在核心配置文件里只配置一次就行啊!
第2个回答  2011-10-24
hibernate.cfg.xml 是实体类的配置信息 sessionFactory不是从里面读取获得的
以前写增删改的代码会用sessionFactory获取session 来开始事物。关闭事物...等
现在spring你还要配置 AOP 面向切面编程 .....你就不用再那么麻烦的每次写开始和关闭的代码
<!-- 通知 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="alldao" expression="execution(* com.car.dao..*.*(..))"/>
<aop:advisor pointcut-ref="alldao" advice-ref="txadvice" />
</aop:config>

关于spring 的配置文件有个小疑问。
1,  sessionFactory是从哪来的? 你看产生sessionFactory 后面那个标签有个class,就是那个类,其实就是spring整合Hibernate的时候它自己写了个类来产生SessionFactory,你知道SessionFactory是干嘛的吗,这个是Hibernate中的,应该学过吧 Hibernate中编程有如下步骤、、、Configuration conf = new Configuration...

spring beans.xml 问题
xmlns:context="http:\/\/www.springframework.org\/schema\/context"xmlns:aop="http:\/\/www.springframework.org\/schema\/aop"xmlns:tx="http:\/\/www.springframework.org\/schema\/tx"xsi:schemaLocation="http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-...

Spring的成长之注解@Configuration和@Component
配置类不能是final类(没法动态代理)。配置注解通常为了通过@Bean注解生成Spring容器管理的类,配置类必须是非本地的(即不能在方法中声明,不能是private)。任何嵌套配置类都必须声明为static。Bean方法可能不会反过来创建进一步的配置类(也就是返回的bean如果带有@Configuration,也不会被特殊处理,只会...

Spring配置映射关系时一对多、多对一和多对多关联到底有何区别,可否...
1>你的问题应该是数据库设计方面的,至少是Java框架中的持久层框架中的概念,与Spring好像没什么关系.2>计算机软件是为了解决某一领域问题而设计的.所以领域问题的环境,使用情况,都影响着软件设计.例如一本书这个对象在不同的语境环境下就与其它事或物有不同的关系.(a)"你有一本<<java编程思想>>",...

【基础系列】ConfigurationProperties 配置绑定中那些你不知道的...
配置的自动提示支持也比较简单,添加 org.springframework.boot:spring-boot-configuration-processor 依赖,打包之后在 META-INF 中会多一个 json 文件 spring-configuration-metadata.json 项目源码 系列博文 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug ...

IDEA中SpringBoot项目依赖全红问题分析及解决方案
后来又仔细思考项目中有可能发生的变动就只有是SpringBoot的版本从1.x升至2.x了,其他版本都没有变化。5.相关工具版本信息IDEA版本:2019.3.3 报错maven版本:3.0.5 SpringBoot版本:2.2.6.RELEASE 6.思考本次项目的依赖报红,尽管是个很小的问题,但是自己独立的解决掉确很有成就感,积累经验、...

Spring Boot引起的“堆外内存泄漏”排查及经验总结
于是修改代码,配置扫包路径,发布上线后内存问题解决。为什么堆外内存没有释放掉呢?虽然问题已经解决了,但是有几个疑问。带着疑问,直接看了一下 Spring Boot Loader那一块的源码。发现Spring Boot对Java JDK的InflaterInputStream进行了包装并且使用了Inflater,而Inflater本身用于解压JAR包的需要用到堆外内存。而包装之后...

springmvc controller 的继承问题
1、隔离命名空间,这是最简单的,直接把子类的requestMapping 多一级或者换个名称 类似 2、 放弃继承带有requestMapping的一般业务类,而只继承没有请求派发的一般父类,类似上文提到的baseController 3、带有疑问的不可行方案,技术上讲,如果把父类的方法设置为private(private方法不影响web请求派发),...

面试官要我介绍一下spring,我该如何比较全面的回答
☆ Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。☆ Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的...

如何在spring框架中解决多数据源的问题
我首先想到在spring的applicationContext中配置所有的dataSource。这些dataSource可能是各种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL等,也可能是不同的数据源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。然后...

相似回答
大家正在搜