Файл: 1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него 2.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 419
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Класс DAO обычно содержит методы для выполнения CRUD-операций (создание, чтение, обновление и удаление) над данными в базе данных. Например, для таблицы пользователей в базе данных мы можем создать DAO, который будет содержать методы для добавления, получения, обновления и удаления пользователей. Реализация этих методов будет зависеть от используемой базы данных и используемого JDBC-драйвера.Пример DAO для работы с таблицей пользователей:publicinterfaceUserDao {publicvoidaddUser(User user)throws SQLException;publicvoidupdateUser(User user)throws SQLException;publicvoiddeleteUser(int userId)throws SQLException;public User getUserById(int userId)throws SQLException;public List getAllUsers()throws SQLException;}publicclassUserDaoImplimplementsUserDao {private Connection conn;publicUserDaoImpl(Connection conn) {this.conn = conn; }publicvoidaddUser(User user)throws SQLException {PreparedStatementps= conn.prepareStatement("INSERT INTO users (name, age) VALUES (?, ?)"); ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); ps.executeUpdate(); ps.close(); }publicvoidupdateUser(User user)throws SQLException {PreparedStatementps= conn.prepareStatement("UPDATE users SET name=?, age=? WHERE id=?"); ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); ps.setInt(3, user.getId()); ps.executeUpdate(); ps.close(); }publicvoiddeleteUser(int userId)throws SQLException {PreparedStatementps= conn.prepareStatement("DELETE FROM users WHERE id=?"); ps.setInt(1, userId); ps.executeUpdate(); ps.close(); }public User getUserById(int userId)throws SQLException {PreparedStatementps= conn.prepareStatement("SELECT * FROM users WHERE id=?"); ps.setInt(1, userId);ResultSetrs= ps.executeQuery();Useruser=null;if (rs.next()) { user = newUser(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); } rs.close(); ps.close();return user; }
public List getAllUsers()throws SQLException {Statementstmt= conn.createStatement();ResultSetrs= stmt.executeQuery("SELECT * FROM users"); List users = newArrayList(); while (rs.next()) {Useruser=newUser(); getAllUsers() {CriteriaBuilderbuilder= entityManager.getCriteriaBuilder(); CriteriaQuery query = builder.createQuery(User.class); Root root = query.from(User.class); query.select(root);return entityManager.createQuery(query).getResultList();}}В этом примере класс User аннотирован как @Entity, что означает, что он является сущностью базы данных. Каждое поле класса отображается на столбец таблицы базы данных.
Класс UserDao использует EntityManager, который представляет собой центральную точку для управления объектами JPA. Он предоставляет методы для выполнения CRUD-операций и поиска объектов в базе данных. В этом примере используются методы persist, merge, find и createQuery для управления объектами базы данных.JPA упрощает процесс работы с базами данных и позволяет разработчикам сосредоточиться на логике приложения, а не на работе с базой данных. Он является мощным инструментом для разработки Java-приложений и широко используется в индустрии.
Hibernate обеспечивает большую гибкость и удобство при работе с данными в базах данных. Он также уменьшает количество кода, необходимого для работы с базами данных, и позволяет разработчикам сосредоточиться на бизнес-логике приложения. Hibernate является одним из наиболее популярных ORM-фреймворков для языка программирования Java и широко используется в различных приложениях и проектах.
Это только некоторые из основных классов и интерфейсов, которые используются в JPA/Hibernate. В зависимости от конкретной задачи и конфигурации приложения, могут быть использованы и другие классы и интерфейсы.
public List
-
Что такое JPA?
Класс UserDao использует EntityManager, который представляет собой центральную точку для управления объектами JPA. Он предоставляет методы для выполнения CRUD-операций и поиска объектов в базе данных. В этом примере используются методы persist, merge, find и createQuery для управления объектами базы данных.JPA упрощает процесс работы с базами данных и позволяет разработчикам сосредоточиться на логике приложения, а не на работе с базой данных. Он является мощным инструментом для разработки Java-приложений и широко используется в индустрии.
-
Что такое ORM?
-
Что такое Hibernate?
Hibernate обеспечивает большую гибкость и удобство при работе с данными в базах данных. Он также уменьшает количество кода, необходимого для работы с базами данных, и позволяет разработчикам сосредоточиться на бизнес-логике приложения. Hibernate является одним из наиболее популярных ORM-фреймворков для языка программирования Java и широко используется в различных приложениях и проектах.
-
В чем разница между JPA и Hibernate? Как связаны все эти понятия?
-
Какие классы/интерфейсы относятся к JPA/Hibernate?
-
EntityManagerFactory: фабрика, которая создает EntityManager. -
EntityManager: основной интерфейс для взаимодействия с базой данных. Он позволяет сохранять, загружать, изменять и удалять объекты из базы данных. -
EntityTransaction: интерфейс для управления транзакциями при работе с базой данных. -
Query: интерфейс для выполнения запросов к базе данных с помощью JPA Query Language (JPQL). -
CriteriaQuery: интерфейс для создания запросов к базе данных с помощью критериев запросов. -
CriteriaBuilder: интерфейс для создания критериев запросов. -
Persistence: класс, который используется для создания EntityManagerFactory. -
SessionFactory: фабрика, которая создает Session. -
Session: основной интерфейс для взаимодействия с базой данных в Hibernate. -
Transaction: интерфейс для управления транзакциями при работе с базой данных в Hibernate. -
Query: интерфейс для выполнения запросов к базе данных с помощью Hibernate Query Language (HQL). -
Criteria: интерфейс для создания запросов к базе данных с помощью критериев запросов в Hibernate.
Это только некоторые из основных классов и интерфейсов, которые используются в JPA/Hibernate. В зависимости от конкретной задачи и конфигурации приложения, могут быть использованы и другие классы и интерфейсы.
-
Основные аннотации Hibernate, рассказать.
-
@Entity: используется для определения класса, который представляет таблицу базы данных. Объекты этого класса могут быть сохранены в базу данных. -
@Table: используется для указания имени таблицы, которая соответствует классу. -
@Id: используется для указания поля, которое представляет первичный ключ таблицы. -
@GeneratedValue: используется в сочетании с @Id для автоматической генерации значений первичного ключа при сохранении объекта в базу данных. -
@Column: используется для указания имени столбца, которое соответствует полю класса. Эту аннотацию можно также использовать для указания ограничений на тип данных столбца и других атрибутов. -
@OneToMany: используется для указания связи «один ко многим» между двумя классами. Например, если у нас есть класс Order и класс OrderItem, который представляет элементы заказа, а каждый заказ имеет несколько элементов, мы можем использовать аннотацию @OneToMany в классе Order для связи со списком элементов заказа. -
@ManyToOne: используется для указания связи «многие к одному» между двумя классами. Например, если у нас есть класс Order и класс Customer, и каждый заказ имеет только одного покупателя, мы можем использовать аннотацию @ManyToOne в классе Order, чтобы указать связь с покупателем. -
@Transient: используется для указания поля, которое не должно быть сохранено в базу данных.
-
Чем HQL отличается от SQL?
-
Объектная модель данных: HQL работает с объектами, которые являются представлением данных в приложении, в то время как SQL работает с таблицами и столбцами в базе данных. -
Синтаксис: HQL имеет свой синтаксис, который основан на языке Java. SQL, с другой стороны, имеет свой синтаксис и является независимым от языка. -
Типизация: HQL использует типизированные параметры и выражения, которые представляют поля объектов, в то время как SQL использует не типизированные параметры и выражения, которые представляют значения столбцов таблиц. -
Маппинг: HQL использует маппинг объектов на таблицы базы данных, в то время как SQL работает напрямую с таблицами базы данных. -
Проверка на этапе компиляции: HQL может быть проверен на этапе компиляции, что позволяет обнаружить ошибки запроса в ранние стадии. SQL, с другой стороны, не может быть проверен на этапе компиляции.