Я использую Wildfly с Hibernate, и у меня будет два разных проекта, обращающихся к одной базе данных. Каждый проект имеет свой собственный persistence.xml, но источники данных в persistence.xml одинаковы. В настоящее время у меня есть один проект с этими источниками данных. Это выглядит следующим образом:

Проект А:




    
        java:jboss/datasources/myprojectDS
        
            
            
            
            
            
            
        
    

    
        java:jboss/datasources/myprojectDS
        
            
            
            
            
            
            
        
    


Дополнительный persistence.xml проекта будет выглядеть следующим образом:

Проект B:




    
        java:jboss/datasources/myprojectDS
        
            
            
            
            
            
            
        
    


В первом проекте используются транзакции JTA и RESOURCE_LOCAL, поэтому я могу вести журнал "вручную". Во втором проекте используется только JTA, так как я выполняю только операции протоколирования. Проект A выполняет операции CRUD, а проект B - только операции создания. Оба проекта работают на одном сервере Wildfly. Возможно ли, что между проектом A и проектом B при доступе к одной и той же базе данных с одними и теми же источниками данных из разных проектов, как это делаю я, может возникнуть какая-либо проблема, возможно, с блокировкой в базе данных, транзакциями в Wildfly или чем-то еще? Я так не думаю, но боюсь, что могут возникнуть какие-то "побочные эффекты", о которых я пока не знаю.

Bevor

Ответов: 2

Ответы (2)

Не должно быть никаких проблем, поскольку источником данных управляет jboss, он выделит соединение в соответствии с вашей конфигурацией, блокировка может произойти, если вы используете одну и ту же строку для обработки из разных проектов, но пусть база данных позаботится об этом.

Для того чтобы не создавать никаких проблем, существуют различные сущности, например, TCP-соединение одно и то же/общие сессии и транзакции различны для работы, Spring и hibernate оба являются зрелыми и лучше всего справляются со своей задачей, если только вы не нарушили конфигурацию ;), ваша выглядит хорошо.

Я согласен, что в принципе вам не стоит беспокоиться! НО, поскольку мы не имеем дело с магией и всегда есть объяснение, когда что-то не работает, единственный случай, когда вы должны беспокоиться, это потенциальное бизнес-соединение между двумя приложениями и, конечно, в конечном итоге в базе данных. Я пытаюсь сказать, что если приложение1, использующее одну и ту же БД с приложением2, выполняет действия над сущностями, которые в конечном итоге должны быть видны/обновлены для логики другого приложения, то да, есть вероятность, что вы столкнетесь с некоторыми техническими тупиками (в конечном итоге это вполне нормально для БД), но может возникнуть проблема на уровне бизнес-кода.

Это вопрос дизайна и более высокого уровня сопряжения, который приводит к техническому сопряжению на БД. Я не уверен, правильно ли я описал это, как проблему высокого уровня :)

2022 WebDevInsider