Neo4j — bu ochiq kodli NoSQL grafik ma'lumotlar bazasi bo'lib, uzellar to'liq munosabatlar bilan bog'langan to'liq funksional ma'lumotlar modelidan foydalanadi, bu esa katta bog'langan ma'lumotlar uchun an'anaviy RDBMS yondashuvlariga qaraganda yaxshiroq mos keladi. Spring Boot Neo4j bilan ishlash uchun bir nechta yordamchi vositalarni taqdim etadi, jumladan spring-boot-starter-data-neo4j "starter".
Neo4j ma'lumotlar bazasiga ulanish
Neo4j serveriga kirish uchun avtomatik konfiguratsiya qilinadigan org.neo4j.driver.Driver ni qo'shish mumkin. Default bo'yicha, instans Neo4j serveriga localhost:7687 manzili orqali, Bolt protokolini ishlatib ulanadi. Quyidagi misolda, Neo4j uchun Driver qo'shib, boshqa narsalar qatori, Session ga qanday kirish mumkin ekanligi ko'rsatilgan:
@Component public class MyBean { private final Driver driver; public MyBean(Driver driver) { this.driver = driver; } }
@Component class MyBean(private val driver: Driver) { }
Har xil driver aspektlarini spring.neo4j.* xususiyatlari orqali konfiguratsiya qilish mumkin. Quyidagi misolda foydalanilgan URI va hisob ma'lumotlarini qanday sozlash ko'rsatilgan:
spring.neo4j.uri=bolt://my-server:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=secret
spring:
neo4j:
uri: "bolt://my-server:7687"
authentication:
username: "neo4j"
password: "secret"
Avtomatik konfiguratsiya qilingan Driver ConfigBuilder orqali yaratiladi. Konfiguratsiyani yanada nozik sozlash uchun bir yoki bir nechta ConfigBuilderCustomizer beanlarini e'lon qilish mumkin. Ularning har biri Driver yaratishda foydalaniladigan ConfigBuilder orqali ketma-ket chaqiriladi.
Spring Data Neo4j Repositoriyalari
Spring Data Neo4j uchun repozitoriya qo'llab-quvvatlash vositalarini o'z ichiga oladi.
Spring Data Neo4j ko'plab boshqa Spring Data modullari kabi Spring Data JPA bilan umumiy infratuzilmaga ega. Oldingi bo'limdagi JPA misolini olish va Cityni JPA uchun @Entity emas, balki Spring Data Neo4j uchun @Node sifatida aniqlash mumkin, shu bilan birga saqlash abstraksiyasi quyidagi misolda ko'rsatilganidek bir xil ishlaydi:
public interface CityRepository extends Neo4jRepository<City, Long> { Optional<City> findOneByNameAndState(String name, String state); }
interface CityRepository : Neo4jRepository<City?, Long?> { fun findOneByNameAndState(name: String?, state: String?): Optional<City?>? }
Spring Boot Neo4jTemplate yoki ReactiveNeo4jTemplate binlari orqali klassik va reaktiv Neo4j repozitoriyalarni qo'llab-quvvatlaydi. Agar Project Reactor classpathda mavjud bo'lsa, reaktiv uslub ham avtomatik tarzda sozlanadi.
Repozitoriyalar va entitilar qayerda qidirilishini sozlash @EnableNeo4jRepositories va @EntityScan annotatsiyalari yordamida @Configuration annotatsiyasi bilan belgilangan beanda amalga oshirilishi mumkin.
Reaktiv uslubdan foydalanadigan ilovada ReactiveTransactionManager avtomatik ravishda konfiguratsiya qilinmaydi. Tranzaktsiyalarni boshqarishni yoqish uchun konfiguratsiyada quyidagi bean aniqlangan bo'lishi kerak:
@Configuration(proxyBeanMethods = false) public class MyNeo4jConfiguration { @Bean public ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver, ReactiveDatabaseSelectionProvider databaseNameProvider) { return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider); } }
@Configuration(proxyBeanMethods = false) class MyNeo4jConfiguration { @Bean fun reactiveTransactionManager(driver: Driver, databaseNameProvider: ReactiveDatabaseSelectionProvider): ReactiveNeo4jTransactionManager { return ReactiveNeo4jTransactionManager(driver, databaseNameProvider) } }
GO TO FULL VERSION