From b73e599e2fa535a4d2e6904ffa5e4dfb9e62d859 Mon Sep 17 00:00:00 2001 From: Calvin Date: Wed, 29 Feb 2012 12:02:27 +0800 Subject: [PATCH] =?UTF-8?q?@Transactional=20=E9=BB=98=E8=AE=A4=E4=B8=BArea?= =?UTF-8?q?dOnly=3Dtrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examples/miniservice/service/AccountManager.java | 6 ++---- .../miniweb/service/account/AccountManager.java | 11 +++++------ .../showcase/common/service/AccountManager.java | 9 ++------- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/examples/mini-service/src/main/java/org/springside/examples/miniservice/service/AccountManager.java b/examples/mini-service/src/main/java/org/springside/examples/miniservice/service/AccountManager.java index 686e1e0d..f9a99466 100644 --- a/examples/mini-service/src/main/java/org/springside/examples/miniservice/service/AccountManager.java +++ b/examples/mini-service/src/main/java/org/springside/examples/miniservice/service/AccountManager.java @@ -28,26 +28,23 @@ import com.google.common.collect.Maps; //Spring Service Bean的标识. @Component //默认将类中的所有函数纳入事务管理. -@Transactional +@Transactional(readOnly = true) public class AccountManager { private AccountDao accountDao = null; private Validator validator = null; - @Transactional(readOnly = true) public Department getDepartmentDetail(Long id) { Validate.notNull(id, "id参数为空"); return accountDao.getDepartmentDetail(id); } - @Transactional(readOnly = true) public User getUser(Long id) { Validate.notNull(id, "id参数为空"); return accountDao.getUser(id); } - @Transactional(readOnly = true) public List searchUser(String loginName, String name) { Map parameters = Maps.newHashMap(); parameters.put("loginName", loginName); @@ -55,6 +52,7 @@ public class AccountManager { return accountDao.searchUser(parameters); } + @Transactional(readOnly = false) public Long saveUser(User user) throws ConstraintViolationException { Validate.notNull(user, "用户参数为空"); //使用Hibernate Validator校验请求参数 diff --git a/examples/mini-web/src/main/java/org/springside/examples/miniweb/service/account/AccountManager.java b/examples/mini-web/src/main/java/org/springside/examples/miniweb/service/account/AccountManager.java index 91ad3c94..984d8ca0 100644 --- a/examples/mini-web/src/main/java/org/springside/examples/miniweb/service/account/AccountManager.java +++ b/examples/mini-web/src/main/java/org/springside/examples/miniweb/service/account/AccountManager.java @@ -24,7 +24,7 @@ import org.springside.examples.miniweb.service.ServiceException; //Spring Bean的标识. @Component //默认将类中的所有public函数纳入事务管理. -@Transactional +@Transactional(readOnly = true) public class AccountManager { private static Logger logger = LoggerFactory.getLogger(AccountManager.class); @@ -34,11 +34,11 @@ public class AccountManager { private ShiroDbRealm shiroRealm; //-- User Manager --// - @Transactional(readOnly = true) public User getUser(Long id) { return userDao.findOne(id); } + @Transactional(readOnly = false) public void saveUser(User entity) { userDao.save(entity); shiroRealm.clearCachedAuthorizationInfo(entity.getLoginName()); @@ -47,6 +47,7 @@ public class AccountManager { /** * 删除用户,如果尝试删除超级管理员将抛出异常. */ + @Transactional(readOnly = false) public void deleteUser(Long id) { if (isSupervisor(id)) { logger.warn("操作员{}尝试删除超级管理员用户", SecurityUtils.getSubject().getPrincipal()); @@ -62,32 +63,30 @@ public class AccountManager { return id == 1; } - @Transactional(readOnly = true) public List getAllUser() { return (List) userDao.findAll(new Sort(Direction.ASC, "id")); } - @Transactional(readOnly = true) public User findUserByLoginName(String loginName) { return userDao.findByLoginName(loginName); } //-- Group Manager --// - @Transactional(readOnly = true) public Group getGroup(Long id) { return groupDao.findOne(id); } - @Transactional(readOnly = true) public List getAllGroup() { return (List) groupDao.findAll((new Sort(Direction.ASC, "id"))); } + @Transactional(readOnly = false) public void saveGroup(Group entity) { groupDao.save(entity); shiroRealm.clearAllCachedAuthorizationInfo(); } + @Transactional(readOnly = false) public void deleteGroup(Long id) { groupDao.delete(id); shiroRealm.clearAllCachedAuthorizationInfo(); diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/common/service/AccountManager.java b/examples/showcase/src/main/java/org/springside/examples/showcase/common/service/AccountManager.java index 5af7870a..669b4c25 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/common/service/AccountManager.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/common/service/AccountManager.java @@ -25,6 +25,7 @@ import org.springside.modules.utils.security.Digests; */ //Spring Service Bean的标识. @Component +@Transactional(readOnly = true) public class AccountManager { private static Logger logger = LoggerFactory.getLogger(AccountManager.class); @@ -47,7 +48,7 @@ public class AccountManager { * */ //演示指定非默认名称的TransactionManager. - @Transactional("defaultTransactionManager") + @Transactional(readOnly = false) public void saveUser(User user) { if (isSupervisor(user)) { @@ -74,7 +75,6 @@ public class AccountManager { return (user.getId() != null && user.getId() == 1L); } - @Transactional(readOnly = true) public User getUser(Long id) { return userHibernateDao.get(id); } @@ -82,7 +82,6 @@ public class AccountManager { /** * 取得用户, 并对用户的延迟加载关联进行初始化. */ - @Transactional(readOnly = true) public User getInitializedUser(Long id) { if (memcachedClient != null) { return getUserFromMemcached(id); @@ -118,7 +117,6 @@ public class AccountManager { /** * 按名称查询用户, 并对用户的延迟加载关联进行初始化. */ - @Transactional(readOnly = true) public User searchInitializedUserByName(String name) { User user = userHibernateDao.findUniqueBy("name", name); userHibernateDao.initUser(user); @@ -128,7 +126,6 @@ public class AccountManager { /** * 取得所有用户, 预加载用户的角色. */ - @Transactional(readOnly = true) public List getAllUserWithRole() { List list = userHibernateDao.getAllUserWithRoleByDistinctHql(); logger.info("get {} user sucessful.", list.size()); @@ -138,12 +135,10 @@ public class AccountManager { /** * 获取当前用户数量. */ - @Transactional(readOnly = true) public Long getUserCount() { return userHibernateDao.getUserCount(); } - @Transactional(readOnly = true) public User findUserByLoginName(String loginName) { return userHibernateDao.findUniqueBy("loginName", loginName); }