私は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);
}
}
次に、これは私のサーブレットによってアクセスされます...
@Autowired
private UserService userService;
User user = userService.getById(1L);
私のダオと私のサービスがたくさん複製していると感じずにはいられません。サービスレイヤーを使用してロールなどを追加することを検討しており、Daoがビジネスロジックを実行します。
このデザインについてどう思いますか?それは受け入れられますか?