Как правильно привязать объект к коллекции из которой его взяли?
==================================================================

 В общем ситуация следующая: есть менеджер пулов соединений, у которого есть методы открыть соединение (достать из определенного пула) и закрыть (вернуть в тот пул, из которого соединение было взято). Т.е. необходим механизм, который бы понимал к какому пулу принадлежит то или иное соединение.   

  

Идея создать мапу, в которой ключем будет некий идентификатор объекта соединения, а значением индентификатор его родительского пула. Ну и при выдаче соединения добавлять соответствующую записть в мапу, а при закрытии - удалять...   

Собственно вопрос: годным ли будет данное решение, если да, то как можно идентифицировать объект? Хеш-код не вариант, так как соединение мьютебл.   

Есть еще вариант создать обертку над объектом соединения с необходимыми дополнительными свойствами, но как по мне - это будет костыль.  

  

---  

Попробовал ключем мапы сделать Object и добавлять объект подключения. Все работает. Надеюсь это правильное решение. 

 Не знаю, что за соединения у тебя, но этой мапой надо правильно пользоваться. А практика показывает, что если чем-то можно воспользоваться неправильно, то это произойдет.  

Я бы предложил врапперы над пулом и соединением.   

У враппера пула метод obtain, который берет из пула соединение, создаёт над ним обёртку, в которую также ложит сам пул.   

У враппера соединения метод release, который ложит соединение в пул.   

Т.о., при работе с пулами чисто через эти обёртки, воспользоваться неправильно нельзя.