Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导设计模式和SSR vs REST api有一些问题_Java_Rest_Spring Boot_Design Patterns_Server Side Rendering - Fatal编程技术网

Java Spring引导设计模式和SSR vs REST api有一些问题

Java Spring引导设计模式和SSR vs REST api有一些问题,java,rest,spring-boot,design-patterns,server-side-rendering,Java,Rest,Spring Boot,Design Patterns,Server Side Rendering,我想问一些关于构建spring boot 2应用程序的问题。所以几个月前,我决定开始用spring boot和angular构建基本博客应用程序,我创建了一些实体、用户的rest控制器、角色、文章、类别和评论,并为每个实体创建了服务和服务实现,例如,我的UserServiceImpl如下所示 使用HQL,而不是存储库 @Override public List<User> getUsers() { Query q = entityManager.createQ

我想问一些关于构建spring boot 2应用程序的问题。所以几个月前,我决定开始用spring boot和angular构建基本博客应用程序,我创建了一些实体、用户的rest控制器、角色、文章、类别和评论,并为每个实体创建了服务和服务实现,例如,我的UserServiceImpl如下所示 使用HQL,而不是存储库

@Override
    public List<User> getUsers() {
        Query q = entityManager.createQuery("select u from User u");
        List<User> users = q.getResultList();

        if(users == null){
            users = new ArrayList<>();
        }

        return users;
    }
@覆盖
公共列表getUsers(){
Query q=entityManager.createQuery(“从用户u中选择u”);
List users=q.getResultList();
如果(用户==null){
users=newarraylist();
}
返回用户;
}
这样做对吗?我是否必须这样构建它,因为我没有使用任何repo,我看到的每个springboot最佳实践项目都使用存储库而不是HQL,我不确定我是否应该将存储库或自定义服务与HQL一起使用。这是我的第一个问题

第二个问题是我应该使用服务器端渲染和api,还是只使用没有服务器端渲染的api,因为我看到一些项目使用ssr和rest api,这让我很困惑


感谢您提供的帮助回答1:

有三种流行的存储库
crudepository
paging和sortingrepository
JpaRepository

  • JpaRepository是从SpringJPA到EntityManager的抽象层
  • 您使用的是HQL和
    EntityManager
    。您可以在EntityManager中使用HQL,在JpaRepository中使用
    JPQL
  • 使用
    JpaRepository
    您的代码就是这样

    List users=userRepository.findAll(); 返回用户

  • 您可以使用JPQL实现类似的功能,而EntityManager可以使用
    @Query
    注释实现类似功能

  • 重要的是这取决于你将加入的团队以及他们正在从事的工作。团队大多在公司中使用较旧的技术,主要原因如下

    • 它们是稳定的
    • 针对较旧技术的文档/帮助很多(较旧的并不意味着JDBC等,它意味着相对较旧的版本/技术)
    • 大多数应用程序将与它们兼容
  • 因此,在我看来,使用存储库不是最佳实践

    答案2

  • 服务器端渲染的优点是,在服务器上有更多的资源,可以使用这些资源更快地渲染响应。
    • 浏览器/客户端设备可能不够快,转换JSON/XML需要相对较长的时间
    • 当您从服务器本身获得呈现响应时,JS引擎只需显示,而不必费心将JSON转换为HTML/CSS并在cliend设备上呈现

  • 回答得很好,真的很感谢。我忘了提到项目结构。你能给我一些项目的例子吗?再次感谢你的回答!