spring + hibernate cascade rollback

tpz_stamp 2009-09-24 09:15:24
Class Parent {
String name;
List children;
}

Class Child {
String name;
Parent parent;
}

使用 spring, hibernate,在 Parent中,设置 children属性的 cascade=all。
当创建一个Parent时,利用cascade设置同时创建children。 如果我希望在插入child表不成功时,rollback所有的insert操作,应该怎么做?
声明事务?不用annotation 方式,如何写配置文件?
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
myth200909 2009-09-24
  • 打赏
  • 举报
回复
插入child表的类上加进行rollback
@Transactional(rollbackFor = Exception.class)
cchaha 2009-09-24
  • 打赏
  • 举报
回复
给你找了个文章:




一个tomcat下有多个项目,每个项目都有一个连接池,这样资源很是浪费,所有决定让多个项目共享连接池,研究了半天,才搞明白,e文不好,资料也不是很准确。。。。

注意:本文在windows下的tomcat5.5测试通过,linux下还可能会有奇怪的问题欢迎一起交流。

1、在tomcat下的server.xml的GlobalNamingResources下加入共享的连接池,我这里用的是apache的dbcp,开始也用了proxool的连接池,但总是报log版本的问题,所以弃用。

例:



<GlobalNamingResources>
<Resource
name="jdbc/dbcp/orcl/test"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="500"
username="test"
password="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
url="jdbc:oracle:thin:@127.0.0.1:1521:test" />
<GlobalNamingResources>

2、在web项目的的META-INF目录下加入一个Context.xml文件,内容为

<Context reloadable="true" crossContext="true">
<ResourceLink name="jdbc/orcl" global="jdbc/dbcp/orcl/test"
type="java.sql.DataSource">
</ResourceLink>
</Context>


其实就是加了一个指向公共连接池的连接,这样,这个项目下就可以连接公共的连接池了。

3、在hibernate的配置文件里加入以下几行

<property name="hibernate.connection.datasource">java:comp/env/jdbc/orcl</property>

<property name="connection.provider_class">
org.hibernate.connection.DatasourceConnectionProvider
</property>

这样hibernate项目就可以用公共的连接池了。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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