2. Kalıcı olarak barındırılan veriİlişkisel veri tabanı, dosya, vb.Veri bütünlüğü, güvenlik, eş zamanlı erişim vb. kriterlerin sağlanmasıPersistence Nedir?
3. Birbirleriyle ilişkili nesnelerin kaydedilip daha sonra tekrar aynı şekilde oluşturulmasıJava’da nesneler – VT’de tablolarGranülarite UyumsuzluğuSubtype UyumsuzluğuIdentity Uyumsuzluğuİlişkisel UyumsuzluklarVeriye Erişim UyumsuzluklarıJava Nesnelerinde Kalıcılık
4. Granülarite Uyumsuzluğupublic class User {private String username;private String name;private Adressaddress;private Set billingDetails;// getter/setter...}public class BillingDetails {private String accountNumber;private String accountName;private User user;// getter/setter...}public class Adress {private String street;private String city;}
5. Granülarite Uyumsuzluğu (Devam)create table USERS (USERNAME varchar(15) not null primary key,NAME varchar(50) not null,ADDRESS_STREET varchar(50),ADDRESS_CITY varchar(15),)create table BILLING_DETAILS (ACCOUNT_NUMBER varchar(10) not null primary key,ACCOUNT_NAME varchar(50) not null,USERNAME varchar(15) foreign key references user)
6. Inheritance ve Polymorphism gerçekleştirimiHepsi tek tablodaHer biri ayrı tablodaOrtak değişkenler tek tabloda vb.Subtype Uyumsuzluğu
7. Java’da iki nesne eşitliği:a ==b a.equals(b) VT’de eşitlikPrimary KeyÖnerilen her nesnenin primary key için “id” değişkeni olmalıIdentity Uyumsuzluğu
8. Nesne ilişkileri yönlüdür (iki yönlü olabilir) :Many-to-many ilişkiler olabilirVT’de ilişki foreign key ile sağlanırTablolar arası ilişki her zaman one-to-one ya da one-to-manyMany-to-many ilişkilerde üçüncü bir tablo gerekliİlişkisel Uyumsuzluklarpublic class User {private Set billingDetails;...}public class BillingDetails {private User user; // private Set user;}
10. Kalıcı veri üzerinde değişiklik yapabilmek içinselect (tablo ve kolon isimleri)insert (tablo ve kolon isimleri)update (tablo ve kolon isimleri) komutları Java kodları içerisinde yazılmalı. (Her bir nesne için)Diğer Bir Problem - JDBC
11. Object/Relational MappingNesneler ve VT arasında eşleşmenin, tanımlanan metadata bilgileri ile otomatik gerçekleştirilmesiBir gösterimden diğerine dönüşüm işlemi (Nesne <-> VT)ORM Nedir?
12. Temel CRUD işlemini gerçekleştirebilmek için APISınıf ve nitelikleri tasvir eden SQL benzeri sorgu diliEşleme için metadata tanımlama yöntemiTransaction, Concurrency, Caching, Lazy-loading, vb. özellikler ORM Çöz. Sunması Gerekenler
13. EJB 3.0 ile tanımlanan Persistence API belirtimiHibernate geliştiricileri JPA belirtiminin oluşturulmasında katkı sağladı.Hibernate ModülleriHibernate Core (Varolan Hibernate yetenekleri)Hibernate AnnotationHibernate EntityManager (JPA belirtimi için Hibernate yeteneklerinin bir kısmının sarmalanmış hali)JPA Nedir? Hibernate Nedir?
14. Temel Annotation Mapping@Entity@Table(name=“User”)public class User {@Id@GeneratedValue(strategy = GenerationType.AUTO) @Column(name=“user_id”)private Long id; @Column(name=“user_name”, nullable = false)private String name; @Column(name=“user_surname”, nullable = false)private String surname;...
20. @ManyToOne / @OneToManypublic class Phone{...@ManyToOne@JoinColumn(name = “USER_ID", nullable = false)private Useruser;...}public class User{...@OneToMany(mappedBy = “user")private Set<Phone> phones= new HashSet<Phone>();...}
21. @OneToOnepublic class User {...@OneToOne@JoinColumn(name="SHIPPING_ADDRESS_ID")private Address shippingAddress;...}public class Address {...@OneToOne(mappedBy = "shippingAddress")private User user;...}