Рабочие листы
к вашим урокам
Скачать
1 слайд
Использование Hibernate Java Persistence
Для студентов
старших курсов университетов
Ст.преподаватель Дудник О.А.
2 слайд
Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (object-relational mapping — ORM). Она представляет собой свободное программное обеспечение с открытым исходным кодом (open source), распространяемое на условиях GNU Lesser General Public License.
3 слайд
4 слайд
Step 1: Download the Hibernate 4.3.x : First of all you have to download the Hibernate 4.3.x latest release.
Step 2: Create database and table - Next you have to create database and tables
Step 3: Add libraries: You should create project and add the Hibernate libraries files.
You will also have to add the dataBase’s JDK driver jar file.
Step 4: Create model class
Step 5: Create hibernate.cfg file - Create the configuration file of Hibernate framework
Step 6: Create the utility class for getting SessionFactory
Step 7: Write the code for testing the Hibernate example - finally test the application.
5 слайд
STEP 1-3
Download the Hibernate 4.3.x : First of all you have to download the Hibernate 4.3.x latest release
Create database and table - Next you have to create database and tables
6 слайд
Давайте напишем небольшое приложение, использующее библиотеку Hibernate для хранения и обработки таблицы СУБД Oracle. Для начала нам нужно скачать Hibernate.
http://hibernate.org/orm/downloads/
Также нам понадобиться скачать и установить СУБД Oracle.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index-092322.html
7 слайд
)
8 слайд
)
9 слайд
Для просмотра базы данных
нужно установить SQL-developer
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
, который работает только с JDK 1.6(нужно установить)
10 слайд
11 слайд
STEP 4
Create model class
Опишем наш класс-сущность, который будем хранить в БД(в пакете logic):
12 слайд
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="Student")
public class Student {
private Long id;
private String name;
private Long age;
public Student(){
name = null;
}
public Student(Student s){
name = s.getName();
}
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
@Column(name="id")
public Long getId() {
return id;
}
@Column(name="name")
public String getName(){
return name;
}
@Column(name="age")
public Long getAge(){
return age;
}
public void setId(Long i){
id = i;
}
public void setName(String s){
name = s;
}
public void setAge(Long l){
age = l;
}
}
13 слайд
Аннотации здесь используются для Mapping (сопоставление) Java классов с таблицами базы данных. Проще говоря для того, чтобы Hibernate знал, что данный класс является сущностью, то есть объекты данного класса мы будем хранить в базе данных. Использованные здесь аннотации имеют следующий смысл:
@Entity — указывает на то, что данный класс является сущностью.
@Table — задает имя таблицы, в которой будут храниться объекты класса
@Id — обозначает поле id
@GeneratedValue и @GenericGenerator — указывает на то, как будет генерироваться id (у нас — по возрастанию)
@Column — обозначает имя колонки, соответствующей данному полю.
14 слайд
Step 5
Create hibernate.cfg file - Create the configuration file of Hibernate framework
Теперь создадим главный конфигурационный файл hibernate.cfg.xml и помести его в папку bin нашего проекта. Из этого файла Hibernate будет брать всю необходимую ему информацию
15 слайд
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN“ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:MyDB</property>
<property name="connection.username">
Your_Login</property>
<property name="connection.password">
Your_Password</property>
<propertyname="connection.pool_size">
10</property>
<property name="dialect">
org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">
update</property>
<property name=
"hibernate.connection.autocommit">false</property>
<property name=
"current_session_context_class">thread</property>
<mapping class="logic.Student" />
</session-factory>
</hibernate-configuration>
16 слайд
Параметр " hibernate.hbm2ddl.auto " устанавливаем в значение “true” для того, чтобы объекты базы данных создавались автоматически на основе маппинга в java-hibernate проекте.
17 слайд
Step 6: Create the utility class for getting SessionFactory
Теперь создадим пакет util, а в нем класс HibernateUtil, который будет отвечать за обработку данного xml файла и установление соединения с нашей базой данных:
package util;
18 слайд
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactory = null;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
19 слайд
Step 7: Write the code for testing the Hibernate example
The Data Access Object (DAO) pattern
Для класса-сущности, определим интерфейс StudentDAO из пакета DAO, содержащий набор необходимых методов:
20 слайд
package DAO;
import java.sql.SQLException;
import java.util.List;
import logic.Student;
public interface StudentDAO {
public void addStudent(Student student) throws SQLException; //добавить студента
public void updateStudent(Student student) throws SQLException;//обновить студента
public Student getStudentById(Long id) throws SQLException; //получить стедента по id
public List getAllStudents() throws SQLException; //получить всех студентов
public void deleteStudent(Student student) throws SQLException;//удалить студента
}
21 слайд
Теперь определим реализацию этого интерфейса в классе SudentDAOImpl в пакете DAO.Impl:
22 слайд
package DAO.Impl;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Session;
import util.HibernateUtil;
import DAO.StudentDAO;
import logic.Student;
public class StudentDAOImpl implements StudentDAO
{
public void addStudent(Student stud) throws SQLException {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(stud);
session.getTransaction().commit();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public void updateStudent(Student stud) throws SQLException {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.update(stud);
session.getTransaction().commit();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public Student getStudentById(Long id) throws SQLException {
Session session = null;
Student stud = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
stud = (Student) session.load(Student.class, id);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
return stud;
}
public List<Student> getAllStudents() throws SQLException {
Session session = null;
List<Student> studs = new ArrayList<Student>();
try {
session = HibernateUtil.getSessionFactory().openSession();
studs = session.createCriteria(Student.class).list();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
return studs;
}
public void deleteStudent(Student stud) throws SQLException {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.load(stud, id);
session.delete(stud);
session.getTransaction().commit();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}
23 слайд
Давайте создадим класс Factory в пакете DAO, к которому будем обращаться за нашими реализациями DAO, от которых и будем вызывать необходимые нам методы:
24 слайд
package DAO;
import DAO.Impl.StudentDAOImpl;
public class Factory {
private static StudentDAO studentDAO = null;
private static Factory instance = null;
public static synchronized Factory getInstance(){
if (instance == null){
instance = new Factory();
}
return instance;
}
public StudentDAO getStudentDAO(){
if (studentDAO == null){
studentDAO = new StudentDAOImpl();
}
return studentDAO;
}
}
25 слайд
Ну вот и все! Осталось только посмотреть как это работает:
package main;
import java.sql.SQLException;
import java.util.List;
import logic.Student;
import DAO.Factory;
public class Main {
public static void main(String[] args) throws SQLException {
//Создадим двух студентов
Student s1 = new Student();
Student s2 = new Student();
//Проинициализируем их
s1.setName("Ivanov Ivan");
s1.setAge(21l);
s2.setName("Petrova Alisa");
s2.setAge(24l);
//Сохраним их в бд, id будут //сгенерированы автоматически
Factory.getInstance().getStudentDAO().addStudent(s1);
Factory.getInstance().getStudentDAO().addStudent(s2);
//Выведем всех студентов из бд
List<Student> studs = Factory.getInstance().getStudentDAO().getAllStudents();
System.out.println("========Все студенты=========");
for(int i = 0; i < studs.size(); ++i) {
System.out.println("Имя студента : " + studs.get(i).getName() + ", Возраст : " + studs.get(i).getAge() +", id : " + studs.get(i).getId());
System.out.println("=============================");
}
}
}
26 слайд
Итак,
общая схема того, что нужно знать
о Hibernate
изображена ниже.
27 слайд
28 слайд
Успехов!
Рабочие листы
к вашим урокам
Скачать
Излагаются основы Hibernate и приводится пример его применения в Java-коде.
Hibernate значительно уменьшает время разработки приложений, работающих с базами данных, заботится о связи Java классов с таблицами базы данных (и типов данных Java в типы данных SQL), предоставляет средства для автоматического построения запросов и извлечения данных.
Использование javax.persistence аннотаций, позволяет встроить маппинг сущностей используемой системы хранения (в данном случае hibernate) непосредственно в программый код. Это снижает вероятность появления ошибок и теперь не требуется создавать десятки XML файлов маппинга объектов.
6 663 097 материалов в базе
Настоящий материал опубликован пользователем Dudnik Oxana Antonovna. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
500/1000 ч.
Курс повышения квалификации
36 ч. — 144 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс профессиональной переподготовки
300/600 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.