Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

КАКВО Е MAVEN - Чрез Maven ние можем да автоматизираме някой неща, които правим

ръчно. Т.е. можем да избегнем някои грешки, които можем да направим ръчно. Чрез
Maven казваме как искаме да се build-не нашия проект. Използва XML файлове.
Динамично изтегля Java библиотеки и Maven плъгини. Проектите се конфигурират с
помощта
на проектен обектен модел(Project Object Model - POM), който е съхраняван във
pom.xml.

HIBERNATE FRAMEWORK - Разпределяне на Java класове в таблици на база данни.


HIBERNATE e JAVA ORM (object relation mapping) рамка.
Разпределяне/съпоставяне на обектно-ориентиран модел към релационна база данни.
Реализира се чрез конфигуриране на XML файл или чрез използване на Java
Annotations.

Има различни подходи към JAVA ORM


1) POJO (Plain Old Java Objects)(обикновени стари java обекти) + XML mapping -
Малко старомоден, но много мощен.Реализира се в класическа хибернация.
2) Annotation Java classes(POJO) mapped to DB tables - Базиран е на анотации на
Java и XML и е по-лесен за изпълнение и поддръжка

Hibernate Implementation Example - POJO + XML mapping


public class Student {
private long id;
private String name;
public Student() {
}
// Getters and setters
}

Hibernate Querying Language – HQL

SELECT SELECT + WHERE


SELECT + JOIN
"FROM Student" "FROM Student WHERE name = 'John'" "FROM
Student AS s JOIN s.major AS major"

Hibernate Retrieve Data by Criteria

public static void main(String[] args) {


//…
session.beginTransaction();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery criteria = builder.createQuery();
Root<Student> r = criteria.from(Student.class);
criteria.select(r).where(builder.like(r.get("name"),"P%"));
List<Student> studentList =
session.createQuery(criteria).getResultList();
for (Student student : studentList) {
System.out.println(student.getName());
}
session.getTransaction().commit();
session.close();
}

Java Persistence API - JPA


Entities in JPA - Обекти в JPA

▪Технология за обектно-релационно картографиране (ORM).


▪ Обект на JPA е просто POJO клас
▪ Оперира с POJO обекти с анотации или XML
▪ Абстрактен или конкретен Java клас от най-високо ниво
картографии
▪ Неокончателни полета/свойства, конструктор без аргументи
▪ Реализиран от много ORM двигатели:
▪ Няма необходими интерфейси
Хибернация, EclipseLink и др.
▪ Директен достъп, базиран на поле или собственост
▪ JPA картографира Java класовете в таблици на база данни
▪ Getter/setter може да съдържа логика (напр. валидиране)
▪ Картографира връзките между таблици като асоциации между
класове
▪ Предоставя CRUD функционалност и заявки
▪ Създаване, четене, актуализиране, изтриване + заявки

Entity Class: Student

@Entity @Table(name = "students") Set table name


public class Student {
@Id primari key
@GeneratedValue(strategy = GenerationType.IDENTITY) Identity
@Column(name = "id") Column name
private long id;
@Column(name = "name", length = 50) Column name and length
private String name;
// Getters and setters

ANNOTATION

▪ @Entity - Декларира класа като обект или таблица


▪ @Table - Декларира име на таблица
▪ @Basic – Определя изрично полета без ограничения
▪ @Transient – Посочва свойството, което не е постоянен, т.е. стойността никога не
се съхранява в базата данни
▪ @Id - Указва свойството, използвано за идентичност (основно ключ на таблица) на
класа
▪ @GeneratedValue - указва как самоличността атрибутът може да бъде инициализиран
▪ Автоматично, ръчно или стойност, взета от последователност маса
▪ @Column -Указва атрибута на колоната за свойство на постоянство

JPA Save Objects

public static void main(String[] args) {


EntityManagerFactory emf =
Persistence.createEntityManagerFactory("school");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Student student = new Student("Teo");
em.persist(student);
em.getTransaction().commit();
}
}
JPA Write Data Methods

▪ persist() – запазва даден обект обект в DB (SQL INSERT)


▪ remove() – изтрива даден обект в БД (SQL DELETE чрез първичен ключ)
▪ refresh() – презарежда даден обект от БД (SQL SELECT по първичен ключ)
▪ detach() – премахва обекта от контекста за постоянство (PC)
▪ merge() – синхронизиране на състоянието на отделения обект с компютъра
▪ contains() - определя дали даден обект се управлява от компютъра
▪ flush() – записва промените от компютър в базата данни

JPA Read Data Methods


▪ find() - изпълнява проста заявка Select по първичен ключ

public static void main(String[] args) {


EntityManagerFactory emf =
Persistence.createEntityManagerFactory("school");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.find(Student.class,1)
em.getTransaction().commit();
}

JPA Delete Objects


public static void main(String[] args) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("school");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Student student = em.find(Student.class,1);
em.remove(student);
em.getTransaction().commit();
}
}

JPA Merge Objects - JPA обединяващи обекти

▪ Обединява състоянието на отделен обект в управлявано копие на обособено лице.


▪ Върнатият обект има различна Java идентичност от отделената един

public Student storeUpdatedStudent(Student student) {


return entityManager.merge(student);
}

You might also like