Bu proje, Spring Boot ile JPA/Hibernate kullanılarak basit bir CRUD (Create, Read, Update, Delete) örneğini gösterir.
Proje City (şehir) varlığını (Entities/City.java) kullanır ve veriye erişim için Hibernate tabanlı HibernateCityDal sınıfını sağlar.
src/main/java/com/melikenur/project/hibernateAndJpa/HibernateAndJpaApplication.java- Uygulama giriş (main) sınıfısrc/main/java/com/melikenur/project/hibernateAndJpa/restApi/CityController.java- REST API controllersrc/main/java/com/melikenur/project/hibernateAndJpa/Business/ICityService.java- Servis arayüzüsrc/main/java/com/melikenur/project/hibernateAndJpa/Business/CityManager.java- Servis implementasyonu (business logic)src/main/java/com/melikenur/project/hibernateAndJpa/DataAccess/ICityDal.java- Veri erişim arayüzüsrc/main/java/com/melikenur/project/hibernateAndJpa/DataAccess/HibernateCityDal.java- Hibernate tabanlı DAL implementasyonusrc/main/java/com/melikenur/project/hibernateAndJpa/Entities/City.java- JPA Entity (city tablosu)src/main/resources/application.properties- DB ve JPA yapılandırması
- Java 17
- MySQL (veya uyumlu bir veritabanı)
- Maven (projede Maven Wrapper (
mvnw.cmd) mevcut)
application.properties dosyasında şu ayarlar mevcut (örnek):
spring.datasource.url=jdbc:mysql://localhost:3306/world?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false spring.datasource.username=root spring.datasource.password=12345 spring.jpa.hibernate.ddl-auto=update
Notlar:
spring.jpa.hibernate.ddl-auto=updateayarı ile Hibernate, entity'lere göre tablo oluşturma/güncelleme yapacaktır. Mevcut DB/tablolarınıza dikkat edin.- Projeyi çalıştırmadan önce MySQL'de
worldveritabanını oluşturun veyaapplication.propertiesiçindeki URL'yi kendi veritabanınıza göre güncelleyin.
IDE (IntelliJ/VS Code) içinde HibernateAndJpaApplication sınıfının main metodunu çalıştırabilirsiniz.
Aşağıdaki endpoint'ler CityController tarafından sağlanır (base path: /api):
- GET /api/cities
- Tüm şehirleri döndürür.
- GET /api/cities/{id}
- Belirtilen
id'ye sahip şehri döndürür.
- Belirtilen
- POST /api/add
- Request body içinde
CityJSON göndererek yeni şehir ekler.
- Request body içinde
- POST /api/update
- Request body içindeki
Cityile güncelleme yapar.
- Request body içindeki
- POST /api/delete
- Request body içindeki
City(veya id) ile silme işlemi gerçekleştirir.
- Request body içindeki
Örnek curl (Windows PowerShell değil terminal örneğidir):
# Tüm şehirleri al
curl -s http://localhost:8080/api/cities
# Tek şehir al
curl -s http://localhost:8080/api/cities/1
# Yeni şehir ekle
curl -X POST -H "Content-Type: application/json" -d '{"name":"MyCity","countryCode":"TUR","district":"Istanbul","population":100000}' http://localhost:8080/api/add(Windows PowerShell'de curl alias'ı farklı olabilir; PowerShell'de Invoke-RestMethod veya curl.exe kullanın.)
Cityentity'si JPA anotasyonları ilecitytablosuna eşlenmiştir.HibernateCityDalEntityManager üzerindenSessionalıp HQL/Session API ile CRUD işlemlerini yapar.CityManageriş mantığını (servis katmanını) içerir veICityDalüzerinden veri erişimini kullanır. Metotlar@Transactionalanotasyonu ile transactional bağlamda çalışır.CityControllerREST uç noktalarını sunar ve servis katmanını çağırır.