Java Spring JDBC一对一关系
我正在使用SpringJDBC开发一个应用程序,我面临一个问题。在我的领域层,我有字段;基本类型和对象关联。如果某人属于某个自治市,我有:Java Spring JDBC一对一关系,java,spring,jdbc,spring-jdbc,Java,Spring,Jdbc,Spring Jdbc,我正在使用SpringJDBC开发一个应用程序,我面临一个问题。在我的领域层,我有字段;基本类型和对象关联。如果某人属于某个自治市,我有: public class Person { private Municipality municipality; // More code } public class Municipality { // More code } 在数据库中,使用主键+外键对此进行建模。在这种情况下,person表的主键有一个外键。我已经为个人
public class Person {
private Municipality municipality;
// More code
}
public class Municipality {
// More code
}
在数据库中,使用主键+外键对此进行建模。在这种情况下,person表的主键有一个外键。我已经为个人和市政当局创建了一个存储库。现在我想找回一个人,但同时我也想把市政当局和它联系起来
我要做的第一件事是找到使用person存储库的人员。然后我想找到属于这个人的市政府。但是目前我没有在我的域对象中建模外键。这意味着,Person类中没有private int\u id
字段。这将导致域对象与数据库耦合(至少现在是这样)
仅仅为了查找市政id而发出另一个查询感觉不正确。我怎样才能解决这个问题?但是,我需要市政id才能找到市政。这里有一些可能的选项供您选择
在模型中添加市政ID,或使用ORM(JPA、Hibernate等)。注意:模型表示来自数据库的数据。外键有一个字段有什么问题?这不意味着域层“知道”我使用数据库进行持久化吗?我的意思是,为什么在模型中会有外键?或者可以吗?@LuckyLuke域层所知道的是,你可以用一个唯一的数字来识别其他类型的实体,让你以后从某个持久性存储中获取它们。不幸的是,我完全不知道如何使域类完全不知道是可持久的。是的,这是真的。嗯,也许没有我第一次想的那么糟糕。@LuckyLuke:为什么你会被外键而不是主键所困扰?模型并不表示数据库中存储的内容。每次模式更改时都必须对其进行重构。在几乎不可能的情况下,如果不再使用关系数据库存储数据,您将面临更大的问题。有时,自然、务实的方式是更好的方式。