如何在Java中创建具有一对一关系的唯一数据库记录文件?
我有许多表,它们与Hibernate映射的表客户机有一对一的关系 在使用线程对每个表进行选择之后,我需要创建一个唯一客户机文件 每个表格(如发票、服务等)也将包含在文件中,但在客户列表之后(政府要求,不问为什么…) 我想到了三种不同的方法: 方法1:使用哈希集 在每次选择之后,我将客户机对象添加到HashSet中。遗憾的是,这个解决方案是不可伸缩的,因为表B可能有数百万条唯一记录,并可能导致OutOfMemory错误 方法2:使用视图 我还可以创建一个连接表的视图。问题在于,这些选择有许多复杂的规则,并且经常会发生更改。维护将是一场噩梦,因为它需要我更改程序和视图 方法3:使用临时表 我可以创建一个临时表来存储在每个表中找到的客户机对象,然后对该表执行选择如何在Java中创建具有一对一关系的唯一数据库记录文件?,java,hibernate,one-to-one,Java,Hibernate,One To One,我有许多表,它们与Hibernate映射的表客户机有一对一的关系 在使用线程对每个表进行选择之后,我需要创建一个唯一客户机文件 每个表格(如发票、服务等)也将包含在文件中,但在客户列表之后(政府要求,不问为什么…) 我想到了三种不同的方法: 方法1:使用哈希集 在每次选择之后,我将客户机对象添加到HashSet中。遗憾的是,这个解决方案是不可伸缩的,因为表B可能有数百万条唯一记录,并可能导致OutOfMemory错误 方法2:使用视图 我还可以创建一个连接表的视图。问题在于,这些选择有许多复杂的
到目前为止,方法3似乎是最好的解决方案,但我想知道是否有更好的方法。如何改进我的设计?我从错误的角度看待问题 我专注于在每个线程中选择数据库并创建不同的文件(即一个用于发票,一个用于服务等),然后将所有文件合并到一个文件中。这当然是一个解决方案,但它提出了上述问题 第二种方法是首先选择数据库上的记录(线程和所有线程)。然后,可以使用模板引擎(如FreeMarker、Chunk…)或自定义格式化程序创建文件 有很多方法可以通过线程实现这一点(即使run()方法返回一个void):
- 使用带有FutureTask的ExecutorService来获取模型列表李>
- 使用带有同步方法的静态对象来保存模型李>
- 使用依赖注入在可运行对象上注入所述对象,使其成为单例