小编Raf*_*ael的帖子

六角形结构与弹簧数据

我将开始一个新项目来学习弹簧靴,弹簧数据和六边形结构.根据我的理解,六边形体系结构旨在将核心或域层与数据库操作(Infrastructure Layer)分开.我已经看到了这个架构的以下项目结构.

核心层有:

服务 - >逻辑走向(接口及其实现).

实体 - >这些将在整个应用程序中使用.

存储库 - >基础结构层必须实现的接口.

Infrastructure Layer具有Repository接口,JPA实体,对数据库的调用(hibernate)以及将JPA实体转换为Core Entities(mappers?)的某种函数的实现.

Spring数据有一种非常有用的方法来实现CRUD操作:

public interface UserRepository extends JpaRepository<User, Integer> {
}
Run Code Online (Sandbox Code Playgroud)

不过,我觉得如果我用春天的数据,JPA的实体将不会是基础设施层的一部分,如果UserRepository是核心层的一部分.这意味着核心实体将毫无用处.我应该创建另一个属于核心层的UserRepository接口还是我缺少的东西?

更新:

我对使用spring数据的关注来自于我必须在域内包含JPA实体,理论上它会违反六边形体系结构.

所以我想将域实体与JPA实体分开.但是,如果我这样做,我不知道Spring Data的存储库应该去哪里,也找到了将JPA实体转换为Domain实体的方法.

为了更好地说明一点,我将假设我需要从我的应用程序连接到数据库以读取用户表.

这可能是域实体:

public class UserDomain{
  private String name;
  ....//More fields, getters, and setters.
Run Code Online (Sandbox Code Playgroud)

根据我的理解,服务应包括逻辑并操作域实体.

public interface UserService{
  public void create(UserDomain user);
  ...
Run Code Online (Sandbox Code Playgroud)

实施:

public class UserServiceImpl implements UserService{
  public void create(UserDomain user) {
     ... //Calling the repository(Spring Data Repository?)
Run Code Online (Sandbox Code Playgroud)

以上与存储库接口是我认为的域(如果我错了请纠正我).接下来,基础架构由JPA实体组成

@Entity
@Table(name="users")
public class User{
  @Column(name="name")
  private String name;
  ... // …
Run Code Online (Sandbox Code Playgroud)

java spring hexagonal-architecture spring-data-jpa

7
推荐指数
2
解决办法
3281
查看次数

javaFlang中的java.lang.UnsatisfiedLinkError:com.sun.glass.ui.gtk.GtkApplication._isDisplayValid()Z

我有一台装有Ubuntu 16.10的计算机(yakkety),它可以完美地运行javafx应用程序。但是,即使我具有相同的openjfx软件包(8u102-b14-1),当我尝试在另一台使用ubuntu 18.10(宇宙)的计算机上运行相同的应用程序时,却遇到此异常。其他openjfx仿生软件包也不起作用。

$ java -jar target/app.jar

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.gtk.GtkApplication._isDisplayValid()Z
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:267)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:211)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:337)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    ... 5 more
Caused by: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.gtk.GtkApplication._isDisplayValid()Z
    at com.sun.glass.ui.gtk.GtkApplication._isDisplayValid(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.isDisplayValid(GtkApplication.java:83)
    at com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:67)
    at com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:41)
    at com.sun.glass.ui.Application.run(Application.java:146)
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:257)
    ... 9 more
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

ubuntu javafx

7
推荐指数
1
解决办法
1134
查看次数