„3. Perzisztencia (2012)” változatai közötti eltérés

Ferrero (vitalap | szerkesztései)
Ferrero (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
171. sor: 171. sor:
* Order by, Group by
* Order by, Group by
* Contrainteket is kezel
* Contrainteket is kezel
==JPA (Java Persistance API)==
=== Alapok ===
* az entitás szerializálható
* POJO (Plain olda java object) is szerializálható
* szabványos O-R kapcsolat
* lekérdezhetöség
* Entity Manager (EM) a felügyelö
** Persistence context (PC): perzisztens objektumok futási környezete, élettartamár a konténer vagy az alkalmazás menedzseli
* Session (hibernate) == EM (JPA) ??
* Persistence Unit: standard könyvtárszerkezet, O-R leképezéseket, relációkat, ezek hatásközét tartalmazza, illetve Java annotációkat és/vagy XML-t (persistence.xml)
=== Entitás ===
* @Entity annotáció (vagy XML)
* public vagy protected no-arg konstruktora van (final kizárva: osztály, metódus, változó)
* Serializable-t implementálja
* örökölhet entitástól vagy POJO-tól, POJO örökölhet entitástól
* konténeren kívül is használhatóak
[[Fájl:oo_jpa_entitas.png]]
==== Perzisztens elemek ====
* mezötöl és propertytöl is függ hogy perzisztens-e
* nem szerializálható elemek: static, transient, @Transient
* szerializálhatóak: mezök és propertyk (@Basic): primitiv, string, wrapper, byte[], char[], enum, Collection, Set, List, Map (generic is), összetett, beágyazott (@Embedded)
* betöltés lehet: Eager és Lazy
==== Kulcs ====
* Primary key kötelezö
* egyszerü kulcs: @Id, ami lehet primitiv, wrapper, string, date
* összetett kulcs
** Primary Key osztály: @IdClass
** Kulcs elem: @EmbeddedId
* kulcsgenerálás: @GeneratedValue(strategy = GenerationType.X), ahol X = AUTO, SEQUENCE, IDENTITY, TABLE
==== Entitások életciklusa ====
* Entity Manager müveletei: persist, refresh, remove, merge
* Entity Manager egyéb müveletei: find, getReference, flush, clear, Query
* tranzitivitas: reláció paramétere, cascase = (müveletek) + ALL
<pre>
@Entity
public class MyClass implements Serializable {
      @Basic
      Date birthday;
}
<entity name="mydonain.MyClass">
      <attributes>
            <basic name="birthday"/>
      </attributes>
</entity>
</pre>
=== Relációk ===
* megegyezik a HIbernate-tel
* Annotációs: @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
* egy- és kétirányú, kétirányúnál tulajdonos oldal - idegen kulcs, inverz oldal - referencia (mappedBy = )
<pre>
@Entity
public class Car implements Serializable {
      @ManyToOne
      private Person owner;
@Entity
public class Person implements Serializable {
      @OneToMany(mappedBy = "owner")
      private Collection<Car> cars = new HastSet();
</pre>
==== Öröklés ====
* table-per-class-hierarchy, table-per-subclass, table-per-concrete-class
=== Lekérdezések ===
* JPQL (Java Persistence Query Language)
* Statikus lekérdezések: @NamedQuery, @NamedNativeQuery
<pre>
@Entity
@NamedQuery(name = "carByplate", query = "SELECT c FROM Car c WHERE c.plate = :rsz")
Car c = (Car) em.createNamedQuery("carBypalte").setParameter("rsz", plate).getSingleResult();
</pre>
* Dinamikus lekérdezések: runtime string komponálás, paraméterezéssel
<pre>
Query query = em.createQuery("SELECT p FROM Product p WHERE p.param2 < :threshold ORDER BY p.param1 ascending");
query.setParamater("threshold", my_threshold);
List results = query.getResultList();
</pre>
* Natív SQL lekérdés a konkrét DB nyelve szerint, számozott paraméterezéssel
<pre>
Query query = em.createNativeQuery("SELECT * FROM Product p WHERE p.param2 < ?1");
query.setParameter(1, my_threshold).setMaxResults(10);
List results = query.getResultList();
</pre>
* Criteria Query (Hibernate), Builder minta szerint futás közben
<pre>
CriteriaQuery cq1 = em.getCriteriaBuilder().createQuery();
cq1.select(cg1.from(Person.class));
Iterator iter = ((List<Person>) em.createQuery(cq1).getResultList()).iterator();
</pre>


==PSEPro (ObjectStore)==
==PSEPro (ObjectStore)==
* OO adatbázis, 50 MB adatkezelés, egy-felhasználós, konkurens session-ök, alkalmazáson belül fut, nincs külsö adatbázis, szemétgyüjtés megoldva
===Objektumok tulajdonságai===
===Objektumok tulajdonságai===
* Állapotok:
* Állapotok:
A lap eredeti címe: „https://vik.wiki/3._Perzisztencia_(2012)