spring-data-jpa 如何将代码划分为MVC结构(视图除外)以使用JPA(事务)?

pbgvytdp  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(114)

我想划分开发逻辑结构,所以我划分了控制器,仓库,仓库实现,vo,服务。
控制器、VO、存储库都可以。
但对于知识库来说,由于服务中存在事务代码,实现和服务很难划分逻辑。
我在sts4中使用的是hybernate jpa。
吹制代码用于服务。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");             
        EntityManager em = emf.createEntityManager();
        EntityTransaction tx = em.getTransaction();

以下代码用于Repository界面。

public interface LoginRepository {
    List<UserInfo> findUser(String id, String pw);
}

下面的代码用于RepositoryImpl。

public class LoginRepositoryImpl implements LoginRepository{
    UserInfo userInfo = new UserInfo();     

    @Override
    public List<UserInfo> findUser(String id, String pw) {
        userInfo.setId(id);
        userInfo.setPw(pw);

        // it didn't finish the code yet.
        return null;
    }
}

所以我认为emf和em对象可以进入RepositoryImpl类,这样它们就可以使用该对象来使用数据CRUD。但问题是tx对象似乎必须保留在事务的服务类中。
或者emf、em、tx都应该保留在服务类中?

xghobddn

xghobddn1#

正如您所说的,服务类和它的实现类一般很难分开,所以服务类和它的实现类的包结构一般如下


**.**.**.service
**.**.**.service.impl

,但是在日常开发中,几乎所有的业务都是在impl中实现的,为了更好的扩展和维护,你不能把其他的类放到impl包里,即使这样对你的开发有好处,如果你做了sub-do,你的项目可能就没有办法被别人维护了,这是我的理解,我身边的开发者也是这样做的。

相关问题