java使用Spring数据JPA,邻接矩阵存储在MySQL数据库中
我不熟悉使用Spring Data Jpa,但我知道人们通常会在Java中创建一个“Model”/“Entity”类,它代表数据库表中的一行数据。当我有一个包含3列/类属性的小表时,这对我来说是有意义的,但是对于一个包含100列的表来说呢?很难创建一个具有100个属性的“模型”类?我之所以问这个问题,是因为我在MySQL数据库表中存储了一个大型的火车站邻接矩阵。我想在我的Java Spring应用程序中与这些数据交互,但我不知道该怎么做
我愿意接受这样一个事实:在这种情况下,我可能存储的数据不正确,或者根本不应该使用Spring data JPA。任何建议都将不胜感激
谢谢
编辑:
我会尽量更清楚地解释我要做的事情。实际上,我想将这个“Stations”(邻接矩阵)数据库表的一个副本导入到我的Java Spring应用程序中。我不知道如何最好地执行这个“导入”,也不知道存储表的Java数据结构。我希望能够在Java中对数据运行一次类似BFS的算法
表中的数据是显示列车网络图的邻接矩阵。“1”表示站点通过轨道连接,“0”表示没有连接
# 1 楼答案
在这种情况下,将其表示为多对多关系可能会很好。我对JPA不是很熟悉,但我认为它看起来是这样的:
车站相互连接,因此当车站B与车站A相邻时(即B在A的相邻车站集中),车站A也与车站B相邻(即A也在B的相邻车站集中)
在数据库中,站点之间的关系将通过一个映射表来表示,该映射表有两列(station_id_1、station_id_2),每个连接一行
# 2 楼答案
我想当你做BFS的时候你需要一个以前的电台名称,因此,要么创建一个有100个名称的模型类,使用@Getter和@Setter注释,要么创建一个有100个元素的列表,并将索引表示形式作为枚举存储在其他一些文件中。在这种情况下,您必须将数据库模式更改为stations,并将数组作为blob/text
# 3 楼答案
如果你的模型真的用一百个属性表示,那么是的,你可以创建一个有一百个属性的实体。但是我认为你的模型需要修改,因为我认为插入一个新记录需要改变模式
既然我不知道这些列代表什么,我就假设它们可能是下一站和上一站?这将是一个简单的模型来表示这一点
您的DDL将如下所示:
因为这个表实际上有自己的键,所以首先要插入一个没有上一个或下一个设置的站,然后更新记录来设置这些值。如果我不知道这些值是什么,请更新你的问题,更好地描述你试图建立的模型,以获得更准确的答案
# 4 楼答案
可以使用以下两个类:
还有一个MatrixLine类: