Вы можете использовать встроенный язык запросов JPA, JPQL, не так ли?(У него наверняка есть оператор JOIN.) Имейте в виду, что это не стандартный SQL, а нечто подобное, поэтому внимательно прочитайте документацию по JPQL.Да, это все еще простые текстовые запросы, встроенные в код Java, и это позор, но, эй, это то, как далеко может зайти Java, поддерживая процесс разработки.
Основным преимуществом здесь является то, что вы получаете объектные объекты в видерезультат ваших запросов - хотя вам все равно нужно привести их из Object.Вы также можете использовать объекты (записи) и их переменные-члены (атрибуты) непосредственно в строке запроса, так что это шаг по сравнению со старым добрым JDBC.
В качестве альтернативы вы также можете выбрать Criteria API, но, честно говоря,Мой опыт был не очень хорош с этим.Синтаксис довольно ужасен, и вы в конечном итоге сами строите низкоуровневый запрос.Это явно Java в худшем случае ... но, по крайней мере, строки, содержащие запросы, могут быть исключены из кода.Я не уверен, что это того стоит.
Проверьте эту страницу для получения дополнительной информации и примеров:
http://download.oracle.com/javaee/6/tutorial/doc/gjise.html