Я изучаю Java EE, и я загрузил затмение с помощью Glassfish для того же. Я видел несколько примеров, а также читал документацию Oracle, чтобы узнать все о Java EE 5. Подключиться к базе данных было очень просто. Я открыл динамический веб-проект, создал сеансовый EJB, использовал EntityManager и с помощью методов get мог получить доступ к сохраненной таблице данных.
Для моего следующего проекта мне пришлось создать простой класс, а затем получить доступ к некоторой таблице БД. Самая первая проблема, с которой я столкнулся, заключалась в том, что атрибут PersistenceUnit будет распознаваться только EJB, сервлетом и т. Д., А не простым классом java. Итак, я не мог использовать способ EntityManager (или могу?)
Меня попросили пойти по пути "JDBC". Самой первой проблемой, с которой я столкнулся, было подключение к БД. Похоже, все это надо жестко запрограммировать. У меня был файл persistence.xml, с помощью которого я мог легко настроить соединение с базой данных. Даже настроить драйвер для БД было несложно. Также в JDBC нет методов get / set для доступа к сущностям таблиц.
Как я понимаю JPA и постоянство по отношению к JDBC? Для чего была задумана JPA? Почему существуют методы set / get? Может кто-нибудь пролить свет на суть этих двух и какие плюсы / минусы без "жаргонов" ?? Пожалуйста, также предложите несколько ссылок. Простой поиск в Google различий между JPA и JDBC привел меня к некоторым сайтам, заполненным "терминологией", которой я не мог следовать :(
Ответы:
Проще говоря:
JDBC является стандартом для подключения к БД непосредственно и работает SQL против него - например ,
SELECT * FROM USERS
и т.д. наборы данных могут быть возвращены , которые вы можете обрабатывать в вашем приложении, и вы можете делать все обычные вещи , какINSERT
,DELETE
, запускать хранимые процедуры и т.д. Это одна из основных технологий, лежащих в основе доступа к базам данных Java (включая поставщиков JPA).Одна из проблем с традиционными приложениями JDBC заключается в том, что у вас часто может быть какой-то дрянной код, в котором происходит множество сопоставлений между наборами данных и объектами, логика смешивается с SQL и т. Д.
JPA - это стандарт объектно-реляционного сопоставления. Это технология, которая позволяет отображать объекты в коде и таблицы базы данных. Это может «скрыть» SQL от разработчика, так что все, с чем они имеют дело, - это классы Java, а провайдер позволяет вам сохранять и загружать их волшебным образом. В основном файлы сопоставления XML или аннотации к получателям и сеттерам могут использоваться, чтобы сообщить провайдеру JPA, какие поля на вашей карте объектов и каким полям в БД. Самый известный поставщик JPA - это Hibernate , так что это хорошее место для начала работы с конкретными примерами.
Другие примеры включают OpenJPA, toplink и т. Д.
Под капотом Hibernate и большинство других провайдеров JPA пишут SQL и используют JDBC для чтения и записи из БД и в нее.
источник
Основное различие между JPA и JDBC - уровень абстракции.
JDBC - это стандарт низкого уровня для взаимодействия с базами данных. JPA - это стандарт более высокого уровня для той же цели. JPA позволяет вам использовать объектную модель в вашем приложении, что может значительно облегчить вашу жизнь. JDBC позволяет делать больше вещей напрямую с базой данных, но требует большего внимания. Некоторые задачи не могут быть эффективно решены с помощью JPA, но могут быть решены более эффективно с помощью JDBC.
источник
JDBC - это спецификация гораздо более низкого уровня (и более старая), чем JPA. По сути, JDBC - это API для взаимодействия с базой данных с использованием чистого SQL - отправки запросов и получения результатов. Он не имеет понятия об объектах или иерархиях. При использовании JDBC вы должны преобразовать набор результатов (по сути, матрицу строк / столбцов значений из одной или нескольких таблиц базы данных, возвращенных вашим запросом SQL) в объекты Java.
Теперь, чтобы понять и использовать JDBC, важно иметь некоторое понимание и практические знания SQL. С этим также приходит необходимое понимание того, что такое реляционная база данных, как вы работаете с ней и такие концепции, как таблицы, столбцы, ключи и отношения. Если у вас нет хотя бы базового понимания баз данных, SQL и моделирования данных, вы не сможете широко использовать JDBC, поскольку на самом деле это лишь тонкая абстракция поверх всего этого.
источник
JDBC является предшественником JPA.
JDBC - это мост между миром Java и миром баз данных. В JDBC вам необходимо предоставить все грязные детали, необходимые для операций CRUD, такие как имена таблиц, имена столбцов, а в JPA (который использует JDBC внизу) вы также указываете эти детали метаданных базы данных, но с использованием аннотаций Java.
Таким образом, JPA создает для вас запросы на обновление и управляет объектами, которые вы искали или создавали / обновляли (он также делает больше).
Если вы хотите создать JPA без контейнера Java EE, то Spring и его библиотеки можно использовать с теми же аннотациями Java.
источник