Spring Data i czyste JDBC

2

Cześć,
Moje zainteresowanie wzbudził projekt: https://github.com/jirutka/spring-data-jdbc-repository. Jest to fork martwego już spring-data-jdbc repository (https://github.com/nurkiewicz/spring-data-jdbc-repository). Ogólnie potrzebuje tego dla prostego CRUD-a na PostgreSQL, a nie chcę używać JPA (jakoś nie lubię, jak nie muszę nie używam). Nie chce mi się samemu pisać generycznej abstrakcji dla JDBC dla bardzo prostych rzeczy. Spring Data nieźle sprawdza się do nieskomplikowanych zagadnień.

Moje wątpliwości:

  1. Czy ktoś korzystał i poleca / odradza? Projekt ma 88 gwiazdek na GitHub. Może znacie lepsze alternatywy? Niestety, na pytania różnych ludzi czy projekt jest rozwijany odpowiedzi brak. Dlaczego tego typu rozwiązanie nie jest utrzymywane przez Springa? Ostatnia aktywność rok temu: z drugiej strony nie spodziewam się, aby było szczególnie dużo pracy z tym projektem jak raz się zrobi.
  2. Od biedy zawsze mogę sobie sforkować i sam patchować jeśli rozwój zostanie zarzucony. Czy są jakieś powody, dla których warto sobie darować tą biblioteczkę? Na 1 rzut oka wygląda super. Jak nikt mnie nie zniechęci zaczynam budować proof-of-concept.

Pozdrawiam,

0

U mnie w projekcie używają http://www.querydsl.com/ - tylko, że nad JPA (czyli z queries są generwowane JPA QL).

  1. Wsółdziała to ze springdata nawet całkiem ok
  2. Zamiast JPA QL querydsl może natomiast generować SQL.

No i niestety nie wiem jak 1 razem z 2 się sprawdza.
Ale sama możliwość nie spogladania na rzygowne JPA QL to już coś. Pisze się w DSL podobnie jak w JOOQ. Niestety cykli życia obiektów oraz transakcji z d...y (z kontenera) - tego co w JPA najniebezpieczniejsze nie da się zupełnie pominąć (a przynajmnie nie próbowali).

0

Kiedyś używałem jOOQ w połączeniu z JPA i dawało radę: produkcyjnie tzn. generowałem SQL w jOOQ wrzucałem jako native query do EntityManagera (dynamiczne zapytania w SQL na tyle złożone, że ciężko było pisać JPQL). Problem w tym, że encja JPA moim skromnym zdaniem wygląda jak rzygi (do tego brak wsparcia dla immutability), dlatego chcę mieć gotową alternatywę i czyste JDBC + Spring Data wydaje się być tym co potrzebuje: stąd pomysł na wspomniany projekt. Może kiedyś przeproszę się z JPA, ale tylko wtedy jak mi za to dodatkowo porządnie zapłacą przy jakiś komercyjnym projekcie to będę szlifował znajomość specyfikacji póki co mi wystarczy. Nie zależy mi dla cache, dlatego chcę spróbować bez ORM: prościej lepiej.

1

Query DSL z JPA jest o wiele lepsze niż Criteria API z JPA, ale też chwale somie MyBatis'a jako dostęp do danych...niewiele magii, łatwo zrozumieć

0

Nie znam dobrze Springa, ale czego Ci brakuje w tym?
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html

A Query DSL (cokolwiek to jest) wygląda że działa bezpośrednio z JDBC:
http://www.querydsl.com/static/querydsl/2.1.0/reference/html/ch02s04.html

Due to changes in Querydsl, the Spring JDBC Extensions support for Querydsl is no longer compatible with more recent versions. We are deprecating this support and recommend that users switch to use the Querydsl project's Spring support and use the Querydsl APIs directly. See https://github.com/querydsl/querydsl/tree/master/querydsl-sql-spring

Źródło: https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/core.querydsl.html

0

Używałem JDBC template było ok dla skomplikowanych query, ale dla prostych query brakowało prostej abstrakcji takiej jak:
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/PagingAndSortingRepository.html

Dla szukania prostych rzeczy np. przeszukaj tabelę po polu niestety chyba będę musiał pisać prostego selecta np. znajdz osobę po PESEL-u. Dla JPA / MongoDB takie zapytanie jest generowane automatycznie: wystarczyło napisać interfejs. Pozostaje przejść do wypróbowania w praktyce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1