Никита: берешь spring boot. на нем строишь свое приложение. на выходе получаешь myapp.war
далее собственно все что тебе нужно для запуска - это установленная java и написать в терминале:
./myapp.war
тут много ньюансов:
если ты генеришь схему гибернейтом и "просто уберешь связь и поставишь Long", то у тебя не создастся внешний ключ на таблицу и индекс, таким образом при селектах с джойнами ты будешь фигачить фулл скан базюки, что мягко говоря не очень.
По поводу двусторонней связи: если ты генеришь схему гибернейтом, он тебе сейчас создаст лишнюю таблицу связей многое ко многим, что тебе совсем не нужно. (ему плевать, что у тебя один ко многим, если ты явно не задашь связь с двух сторон)
По поводу нескольких сущностей: да, это здравая идея. у твоей программы есть api, это сущности, с которыми ты работаешь, совершаешь разные операции и возвращаешь/получаешь через внешние апи (в данном случае думаю rest). Так вот внутреннее и внешнее представления могут различаться. Поэтому ты можешь получать объект и мапить его в свое внутреннее представление (в данном случае, например, пригодное для гибернейта). Для автоматического маппинга между представлениями смотри в сторону dozer dozer.sourceforge.net
далее собственно все что тебе нужно для запуска - это установленная java и написать в терминале:
./myapp.war