X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
Java EE 5 EJB 3.0: відомості

Завантажити презентацію

Java EE 5 EJB 3.0: відомості

Завантажити презентацію

Презентація по слайдам:

Слайд 1

Java EE 5 EJB 3.0 2007 (Курс “Інформаційні технології”) Java EE 5 EJB 3.0

Слайд 2

Зміст Недоліки EJB 2.1. Компоненти EJB 3.0, POJO та анотації. Технологія Java Persistence у Java EE 5. Persistence provider. Використання Persistence на платформі SE. Специфікація Java EE 5 Persistence. Entity Managers. Entities (Java EE 5) та таблиці. Відношення між Entities. Java EE 5 EJB 3.0

Слайд 3

Деякі недоліки EJB 2.X (J2EE 1.4) “Важковаговість”. Дуже складна специфікація, потреба враховувати велику кількість обмежень. Навіть "майстри" не набагато покращували ситуацію. Особливо складною виглядає технологія Persistence та, зокрема, застосування ORM. Специфікація Persistence-моделі виявилась із суттєвими прогалинами, що призвело до появи альтернативних та досить “віддалених” один від одного варіантів каркасів (framework) ORM. До того ж контрастувала “легковаговість” таких каркасів, як JBoss Hibernate, Oracle TopLink тощо. Втрата основних переваг об'єктно-орієнтованого підходу (успадкування, поліморфізм). Java EE 5 EJB 3.0

Слайд 4

“Важковаговість” EJB 2.X (J2EE 1.4). До того ж треба враховувати вимоги щодо успадкованості класів та інтерфейсів, щодо використання виключень, щодо параметрів тощо. Екстремально складне та не інтуітивне програмування Java EE 5 EJB 3.0

Слайд 5

Java EE 5 EJB 3.0 Серед усіх технологічних рішень Java EE 5 найважливішою є специфікація EJB 3.0, значні синтаксичні зміни якої набагато спрощують розробку проектів з EJB: Значне спрощення (на рівні синтаксису) компонентів EJB; Значно спрощена об'єктно-реляційна модель персистентності. Plain Old Java Object (POJO) Java EE 5 EJB 3.0

Слайд 6

Деякі порівняння EJB 2.1 та EJB 3.0 EJB 2.1 EJB 3.0 Number of Java files 17 7 Number of XML files 9 2 Lines of code (Java language) 987 716 Lines of code (XML) 792 26 ______________________________________________ www.jroller.com/comments/raghukodali/Weblog/does_ejb_3_0_really Java EE 5 EJB 3.0

Слайд 7

Компоненти EJB 3.0 та анотації = + @ POJO (Plain Old Java Object) Компонент EJB 3.0 Java EE 5 EJB 3.0

Слайд 8

Session Bean. Приклад (версія конвертора валют) package ejb; import javax.ejb.Remote; /* This is the business interface for cnv3 enterprise bean. */ @Remote public interface cnv3Remote { double USDtoUAG(double USD); } package ejb; import javax.ejb.Stateless; @Stateless public class cnv3Bean implements cnv3Remote { public cnv3Bean() { } public double USDtoUAG(double USD) { return (USD*5.05); } } POJO (Plain Old Java Object) POJI (Plain Old Java Interface ) Deployment Descriptor (файл ejb-jar.xml) - відсутній Java EE 5 EJB 3.0

Слайд 9

Компоненти EJB 3.0 . Перші враження та висновки “Повернення” на платформу ООП (звичайно, бажано ще переконатись у можливості використання принципів ООП) Анотації замість Deployment Descriptor. (Це особливо важливий фактор для Persistence, конфігурування якої в EJB 2.1 було пов'язане у значній мірі з DD та вражало розміром XML-коду). Замовчування, які є чутливими до контексту. . . . вимоги щодо успадкованості класів та інтерфейсів, щодо використання виключень ... Home-інтерфейс відсутній Java EE 5 EJB 3.0

Слайд 10

Session Bean. Приклад (ще одна версія конвертора валют) Замовчування, які є чутливими до контексту. @Stateless public class cnv3Bean { public cnv3Bean() { } @Remote public double USDtoUAG(double USD) { return (USD*5.05); } } Опис інтерфейсів відсутній! Java EE 5 EJB 3.0

Слайд 11

Анотації. Замовчування @Stateless public class c1Bean { @Remote public double Method1(double X1) { return (X1*5.05); } public double Method2(double X1) { ... } } @Stateless @Stateful @Remote @Local @BusinessMethod Не обов'язково! Java EE 5 EJB 3.0

Слайд 12

Клієнтська програма. Dependency injection замість JNDI lookup public class Main { @EJB private static cnv3Remote cnv3Bean; public Main() { } public static void main(String[] args) { try { System.out.println("UAG --- "); System.out.println(cnv3Bean.USDtoUAG(3.0)); System.exit(0); } catch (Exception ex) { System.err.println("Caught an unexpected exception!"); ex.printStackTrace(); } } } J2EE 1.4 (EJB 2.1) Спрощується тестування Java EE 5 EJB 3.0

Слайд 13

EJB 3.0 та entity = + @ entity POJO (Plain Old Java Object) EJB 3.0 EJB 3.0 Java EE 5 EJB 3.0

Слайд 14

Persistence provider Java SE Java EE 5 Java SE Можливість! Java EE 5 EJB 3.0

Слайд 15

Специфікація Persistence EJB 3.0 Основні напрямки: ORM – більш проста та строга специфікація (з використанням анотацій в якості метаданих ORM ). Entity Manager (EM) API— стандартний API для виконання CRUD (create, read, update, delete) та persistence-операцій для entities (persist, різні операції пов'язані з пошуком). Java Persistence Query Language (JP QL) – SQL-подібна мова. Може розглядатись як стандарт OR- query технологій. Є розвитком (та істотним розширенням) EJB QL (перехід від імен, що визначаються абстрактними схемами до імен entity). Java EE 5 EJB 3.0

Слайд 16

ORM . (Специфікація Persistence EJB 3.0) ORM – більш проста та строга специфікація (з використанням анотацій в якості метаданих ORM ). Магія Persistence закладена в анотаціях POJO. У EJB 2.1 окрім стандартного Deployment Descriptor – файлу ejb-jar.xml – з даними ORM -специфікації для конфігурування Persistence необхідно також залучати ще й “Deployment Descriptor від вендорів” (саме там специфікується прив'язка до конкретних баз даних, таблиць, полів таблиці). (Прикладом “Deployment Descriptor від вендорів” є файли sun-ejb-jar.xml ). Головна мета EJB 3.0 – автоматична персистенція (persistence), яка конфігурується повністю (на 100%) за анотаціями Persistence POJO. Java EE 5 EJB 3.0

Слайд 17

Entity Manager. (Специфікація Persistence EJB 3.0) Entity Manager (EM) API— стандартний API для виконання CRUD (create, read, update, delete) та persistence-операцій для entities (persist, різні операції пов'язані з пошуком). Entity Manager ”знає”, як додавати entity до БД, вилучати, оновлювати entity). Entity Manager пов'язується з persistence контекстом (persistence context). Persistence context – це сукупність елементів entity, керованих Entity Manager. Зокрема, persistence context та відповідний менеджер (Entity Manager) може надаватись контейнером EE. Java EE 5 EJB 3.0

Слайд 18

Entity Managers @PersistenceUnit EntityManagerFactory emf; EntityManager em = emf.createEntityManager(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("league"); EntityManager em = emf.createEntityManager(); . . . em.persist(player); Application-Managed Entity Managers (2 варіанти ) @PersistenceContext EntityManagerFactory emf; EntityManager em = emf.createEntityManager(); . . . em.persist(player); Container-Managed Entity Manager Java EE 5 EJB 3.0

Слайд 19

Деякі методи інтерфейсу Entity Manager public void persist(Object entity) – зберігає дані об'єкта (entity) у БД. public void remove(Object entity) – вилучає об'єкт (entity). public Query createQuery(String qlString) – створює запит у JP QL. public Query createNamedQuery(String name) – створює іменований запит до БД (name – ім'я запиту). public Query createNativeQuery(String sqlString) – створює Native-запит до БД (SQL-запит). Java EE 5 EJB 3.0

Слайд 20

Class name Entity name Table name Customer Customer CUSTOMER Class - Entity - Table @Entity public class Customer { @Id int id; ... } id - primary key Java EE 5 EJB 3.0

Слайд 21

Entities та таблиці @Entity @Table(name=“CUST”) public class Customer{ protected int id; @Column(name=“PIP”) protected String name; . . . @Transient protected int orderCount; public Customer(){} @Id @GeneratedValue public int getId(){return id;} protected void setId(int id){this.id = id;} Не буде зберігатись у БД Java EE 5 EJB 3.0

Слайд 22

Вбудовані класи @Embeddable public class CustAddr{ private int streetAddr; private String city; ... } ... @Entity @Table(name=“CUST”) public class Customer{ ... private CustAddr addr; @Embedded @AttributeOverrides({ @AttributeOverride(name="streetAddr", column=@Column("STRT")), @AttributeOverride(name="city", column=@Column("CITY")) ... }) public CustomerAddress getCustomerAddress(){ ... Java EE 5 EJB 3.0

Слайд 23

Спрямованість відношення: односпрямоване; двоспрямоване. Відношення @OneToOne @Entity public class Employee { private Pasport pasp; @OneToOne public Pasport getPasp() { return pasp; } ... } @Entity public class Pasport { @Id int id2; private Employee empl; @OneToOne(mappedBy=”pasp") public Employee getEmpl () { return empl; } ... } Створюється зовнішній ключ у таблиці EMPLOYEE (колонка з іменем PASP_ID2) //inverse side //owner Java EE 5 EJB 3.0

Слайд 24

Відношення @ManyToOne @Entity public class Order { @Id int id; ... @ManyToOne Customer cust; } Java EE 5 EJB 3.0

Слайд 25

Відношення @OneToMany @Entity public class Customer { @Id int id; ... @OneToMany(mappedBy=“cust ”) Collectionorders; } //inverse side @Entity public class Order { @Id int id; ... @ManyToOne Customer cust; }//owner Java EE 5 EJB 3.0

Слайд 26

Відношення @ManyToMany @Entity public class Customer { @Id int id; ... @ManyToMany Collection phones; } } @Entity public class Phone{ @Id int id; ... @ ManyToMany(mappedBy= “phones ”) Collection< Customer > custs; } Java EE 5 EJB 3.0

Слайд 27

Відношення @ManyToMany @Entity public class Customer { @Id int id; ... @ManyToMany @JoinTable(table=“CUST_PHONE ”, joinColumns=@JoinColumn(name=“CUST_ID ”), inverseJoinColumns=@JoinColumn(name=“PHON_ID ”)) Collectionphones; } Java EE 5 EJB 3.0

Слайд 28

Успадкування (Inheritance) Java EE 5 EJB 3.0

Слайд 29

Успадкування. Стратегії відображення Додатково містяться зовнішні ключі у “дочірніх” таблицях За замовчуванням public enum InheritanceType { SINGLE_TABLE, JOINED, TABLE_PER_CLASS }; Java EE 5 EJB 3.0

Слайд 30

@DiscriminatorColumn (Варіант SINGLE_TABLE) Java EE 5 EJB 3.0

Слайд 31

Успадкування. (Roster Java EE5. Class League.) Java EE 5 EJB 3.0

Слайд 32

Успадкування (Roster Java EE5. Class WinterLeague.) Java EE 5 EJB 3.0

Слайд 33

Успадкування (Roster Java EE5. Class SummerLeague.) Java EE 5 EJB 3.0

Слайд 34

persistence.xml (Roster) Java EE 5 EJB 3.0

Слайд 35

CascadeType, FetchType @OneToMany(mappedBy="customerOrder", cascade=CascadeType.ALL , fetch=FetchType.EAGER // or LAZY ) public Collection getLineItems() { return lineItems; } Java EE 5 EJB 3.0

Слайд 36

Додаток Java EE 5 EJB 3.0

Слайд 37

Requirements for Entity Classes An entity class must follow these requirements: The class must be annotated with the javax.persistence.Entity annotation. The class must have a public or protected, no-argument constructor. The class may have other constructors. The class must not be declared final. No methods or persistent instance variables must be declared final . If an entity instance be passed by value as a detached object, such as through a session bean’s remote business interface, the class must implement the Serializable interface. Entities may extend both entity and non-entity classes, and non-entity classes may extend entity classes. Persistent instance variables must be declared private, protected, or package-private, and can only be accessed directly by the entity class’s methods. Clients must access the entity’s state through accessor or business methods. Java EE 5 EJB 3.0

Завантажити презентацію

Презентації по предмету Інформатика