我是第一次构建一个 SpringMVC 项目,只是想要一些关于我的设计的反馈。
目前我有以下 UserDao
package org.myproj.com.dao;
import org.myproj.com.entity.User;
public interface UserDao {
public User getById(Long id);
}
这是由 UserDaoImpl 实现的
package org.myproj.com.dao;
import org.myproj.com.entity.User;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao{
@Autowired
private SessionFactory sessionFactory;
public User getById(Long id) {
return (User) sessionFactory.getCurrentSession().get(User.class, id);
}
}
然后我有一个服务层,UserService
package org.myproj.com.service;
import org.myproj.com.entity.User;
public interface UserService {
public User getById(Long id);
}
使用 impl,UserServiceImpl
package org.myproj.com.service;
import org.myproj.com.dao.UserDao;
import org.myproj.com.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public UserServiceImpl() {
}
@Transactional
public User getById(Long id) {
return userDao.getById(id);
}
}
然后由我的 servlet 访问它...
@Autowired
private UserService userService;
User user = userService.getById(1L);
不禁觉得我的Dao和我的Service都复制了很多。我正在考虑使用服务层来添加角色等内容,而 Dao 则执行业务逻辑。
你觉得这个设计怎么样?可以接受吗?