我在服务层的实现中遇到了麻烦,我想我没有很好地理解这个概念。
在DAO的实现中,我可以为特定的技术和实体(例如Hibernate和User表)编写所有CRUD逻辑,在服务层中,我们使用DAO来进行DAO中实体的所有数据操作(如getUser、loginUser等)。这样做可以吗?
如果可以,我有一个简单的问题,我可以在服务层或DAO实现中处理数据库连接(或在Hibernate的情况下,会话和事务),还是两者都不可以?
例如,我有一个简单的GUI,其中包含一个按钮(加载所有用户),以及一个包含所有用户的表格。按下按钮将使用所有用户加载表格。
我有一个用于User实体的HibernateDAO(UserHibernateDAO),包含所有CRUD操作,以及一个UserService的服务层,用于一些特定的用户数据操作。
服务层:
在按钮的ActionPerformed中:
这个实现可以吗?会话和事务处理的位置是否正确,还是我需要将它放到服务层中?...或者放到数据访问对象(DAO)中?
编辑1: 如果我有一个UserDAO接口和一个实现UserDAO的UserHibernateDAO,那么服务层就没有存在的理由了,对吗?因为我可以在我的UserDAO中拥有管理“USER”的所有方法,而UserHibernateDAO为Hibernate技术实现了所有这些方法...然后我可以有一个UserJdbcDAO、UserMysqlDAO等...
编辑2:
我不确定,“商业方法”是指这样的方法吗?
谢谢大家。
在DAO的实现中,我可以为特定的技术和实体(例如Hibernate和User表)编写所有CRUD逻辑,在服务层中,我们使用DAO来进行DAO中实体的所有数据操作(如getUser、loginUser等)。这样做可以吗?
如果可以,我有一个简单的问题,我可以在服务层或DAO实现中处理数据库连接(或在Hibernate的情况下,会话和事务),还是两者都不可以?
例如,我有一个简单的GUI,其中包含一个按钮(加载所有用户),以及一个包含所有用户的表格。按下按钮将使用所有用户加载表格。
我有一个用于User实体的HibernateDAO(UserHibernateDAO),包含所有CRUD操作,以及一个UserService的服务层,用于一些特定的用户数据操作。
服务层:
public class UserService extends AbstractServiceLayer{
private AbstractDAO dao;
public UserService(AbstractDAO dao){
this.dao=dao;
}
public List<User> loadAllUsers(){
return dao.findAll();
}
}
在按钮的ActionPerformed中:
private void buttonActionPerformed(ActionEvent evt) {
Transaction transaction=HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
List<User> users=userService.loadAllUsers();
loadTableWithUsers(users);
transaction.commit();
}
这个实现可以吗?会话和事务处理的位置是否正确,还是我需要将它放到服务层中?...或者放到数据访问对象(DAO)中?
编辑1: 如果我有一个UserDAO接口和一个实现UserDAO的UserHibernateDAO,那么服务层就没有存在的理由了,对吗?因为我可以在我的UserDAO中拥有管理“USER”的所有方法,而UserHibernateDAO为Hibernate技术实现了所有这些方法...然后我可以有一个UserJdbcDAO、UserMysqlDAO等...
编辑2:
private void buttonActionPerformed(ActionEvent evt) {
myBusinessMethod();
}
private void myBusinessMethod(){
Transaction transaction=HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
List<User> users=userService.loadAllUsers();
loadTableWithUsers(users);
//some other useful operation before close session
transaction.commit();
}
我不确定,“商业方法”是指这样的方法吗?
谢谢大家。