Добрый день!
название транспорта, фамилии рабочих, инстанции, фамилия агента, фамилия заказчика.
Скорее всего это должно быть не одной таблицей, а несколькими, так как это разные сущности.
Т.е. Журнал может содержать в себе сущность пользователя (сущности - агент, заказчик). А далее уже используя связи OneToOne OneToMany ManyToOne ManyToMany нужно связать эти сущности между собой.
Стоит ли заморачиваться, и связывать через ключи таблицы в sql или можно это связать в самом коде через аннотации?
Аннотации сделают это за вас. В данном случае вы пишете по принципу code first и соответственно, вся логика создания ddl должна быть в коде.
Какие могут быть последствия такой связи?
Ну например, некорректное выставление каскадных типов.
Какие есть нюансы?
Будет сложно пересказать нюансы с учетом общности вопроса. Прочитайте документацию к Spring Data JPA и станет яснее.