Jef*_*rey 6 grails transactions
根据grails docs,默认情况下服务是事务性的.但是,我知道您可以使用该Transactional属性获得更细粒度的事务控制.
如果我有这样的服务
class MyService {
@Transactional(...config...)
def method1() { }
def method2() { }
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,在这种情况下,method1将是交易的,但method2不会.
如果我有
class MyService {
def method1() { }
def method2() { }
}
Run Code Online (Sandbox Code Playgroud)
然后这两个method1和method2都将是事务性的.
它是否正确?
如果您希望将您的服务作为事务设置为true,则为事务属性(这不是强制性的,但如果您想明确该服务是事务性的):
class MyService {
static transactional = true
def method1() { }
def method2() { }
}
Run Code Online (Sandbox Code Playgroud)
如果你不想:
class MyService {
static transactional = false
@Transactional(...config...)
def method1() { }
def method2() { }
}
Run Code Online (Sandbox Code Playgroud)
另一个例子(设置事务属性不是强制性的,但有助于明确 - 如果你不是唯一的编码):
import org.springframework.transaction.annotation.Transactional
class BookService {
@Transactional(readOnly = true)
def listBooks() {
Book.list()
}
@Transactional
def updateBook() {
// …
}
def deleteBook() {
// …
}
}
Run Code Online (Sandbox Code Playgroud)
您可以做的另一件事是注释整个类并覆盖您需要变化的方法:
import org.springframework.transaction.annotation.Transactional
@Transactional
class BookService {
@Transactional(readOnly = true)
def listBooks() {
Book.list()
}
def updateBook() {
// …
}
def deleteBook() {
// …
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 ;)
| 归档时间: |
|
| 查看次数: |
3970 次 |
| 最近记录: |