Skip to content

Code2Work/fullstack-backend-project-11

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-Ticaret Mini (JPA)

Amaç

Küçük bir e-ticaret veri modelini JPA/Hibernate ile kuracaksın. @Entity sınıfları + ilişkiler (@OneToMany, @ManyToOne) hazır verildi; sen repository katmanını EntityManager ile yazacaksın (kaydet/getir/JPQL + aggregate). Süre: ~5-7 saat.

Spring Data JpaRepository KULLANMIYORUZ (H19) — repository'leri EntityManager ile elle yazıyoruz.

Veri Modeli (entity'ler hazır)

Customer ──< @OneToMany >── Order ──< @OneToMany >── OrderItem ──> Product
                              │                          │
                         (@ManyToOne)               (@ManyToOne ×2)
  • Customer (id, name, email) — @OneToMany Order
  • Order (id, customer, orderDate) — @ManyToOne Customer, @OneToMany OrderItem
  • Product (id, name, price)
  • OrderItem (id, order, product, quantity) — Order↔Product n-n ara tablosu (ek alan: quantity)

Öğrenme Hedefleri

  • @Entity, @Id, @GeneratedValue, @Column, @Table
  • İlişkiler: @OneToMany/@ManyToOne + @JoinColumn, n-n'in ara tablo (OrderItem) ile modellenmesi
  • Manuel repository: @Repository + EntityManager (persist, find)
  • JPQL: parametreli sorgu, ilişki üzerinden filtre (o.customer.id), aggregate (SUM)

Başlamadan Önce

  • Java 17/21 + Maven 3.9+. Veritabanı: gömülü H2 (kurulum yok).
  • entity/ ve application.properties hazır — dokunma. repository/ altındaki // TODO N: yorumlarını çöz.

Adım Adım Görevler (repository/)

  1. CustomerRepository (TODO 1-3): save, findById, findAll (JPQL).
  2. ProductRepository (TODO 4-5): save, findById.
  3. OrderRepository (TODO 6-8): save, findById, findByCustomerId (@ManyToOne JPQL).
  4. OrderItemRepository (TODO 9-11): save, totalRevenue (SUM fiyat×adet), totalQuantitySold (SUM + WHERE).

💡 JPQL aggregate: SELECT SUM(oi.product.price * oi.quantity) FROM OrderItem oi. İlişki üzerinden alan: oi.product.price, o.customer.id. SUM boş tabloda null döner — null ise BigDecimal.ZERO/0 döndür. @Transactional hazır.

Testler ve Skor

13 test var (EcommerceTest@DataJpaTest, gömülü H2). 1. student_id.txt'ye numaranı yaz. 2. mvn test. 3. 13/13 olunca panelde yeşil tik (skor otomatik gider).

Çözüm

Takılırsan "Çözümü Göster" (3 gün sonra). EcommerceTest'teki "beklenen/gelen" en iyi ipucu.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages