java web 开发,使用ssh框架,我知道的是使用JDBC编程时,总是这样的步骤,创建一个连接,
在可以在连接内开启事物,然后可以访问数据库,即执行SQL语句,最后关闭连接。相当于一次访问数据库过程。我现在的困惑是,使用hibernate,在service层使用@Tr...
在可以在连接内开启事物,然后可以访问数据库,即执行SQL语句,最后关闭连接。相当于一次访问数据库过程。
我现在的困惑是,使用hibernate,在service层使用@Transactional(readOnly = true)注解进行事物控制,那连接数据库,关闭数据库是在哪操作的?有哪个大神知道的,给小弟解释下,不胜感激!对这个过程很不了解啊~~~~ 展开
我现在的困惑是,使用hibernate,在service层使用@Transactional(readOnly = true)注解进行事物控制,那连接数据库,关闭数据库是在哪操作的?有哪个大神知道的,给小弟解释下,不胜感激!对这个过程很不了解啊~~~~ 展开
2个回答
展开全部
在applicationContext中可以对事务进行配置,使用注解的方式注入事务,在访问数据库时,spring的事务管理器会自动的进行事务管理,结束后进行事务提交,如果中间出现出现异常则会自动回滚事务,详细可以看看org.springframework.orm.hibernate3.HibernateTransactionManager这个类的源码其中的doBegin方法,如果出现异常,则会有:
session.getTransaction().rollback();
SessionFactoryUtils.closeSession(session);
session.getTransaction().rollback();
SessionFactoryUtils.closeSession(session);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Hibernate是委托c3p0管理数据库连接的,c3p0是数据库连接池。你用的连接都由他来管理,这样连接就可以复用减少系统开销。这个连接何时初始化,何时销毁,何时新建都是由配置文件来确认的。
追问
感谢您的回答,请问,你说的,这个链接何时初始化,何时销毁,何时新建都由配置文件决定的,这个配置文件一般是什么配置文件?即在哪个配置文件里面配置的?
追答
你使用了spring集成了的话一般是在jdbc.properties里面。然后由spring给他设置进去。
一般applicationContext.xml里面会有这段配置:
<bean id="dataSource0"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${ds0.jdbc.driverClassName}" />
<property name="jdbcUrl" value="${ds0.jdbc.url}" />
<property name="user" value="${ds0.jdbc.username}" />
<property name="password" value="${ds0.jdbc.password}" />
<property name="minPoolSize" value="${ds0.jdbc.minPoolSize}" />
<property name="maxPoolSize" value="${ds0.jdbc.maxPoolSize}" />
<property name="maxIdleTime" value="${ds0.jdbc.maxIdleTime}" />
....字数超长后面省略了
</bean>
里面的${}是取properties里面的内容。但这个就是配置c3p0的最终的地方
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询