<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Komentarze do: Spring Data JPA &#8211; wprowadzenie	</title>
	<atom:link href="https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/feed/" rel="self" type="application/rss+xml" />
	<link>https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/</link>
	<description>Blog o programowaniu w Javie</description>
	<lastBuildDate>Fri, 04 Aug 2023 17:07:08 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-3509</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Thu, 23 Sep 2021 09:02:30 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1286#comment-3509</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-3508&quot;&gt;michael112&lt;/a&gt;.

Na początku oczywiście może wydawać się to dziwaczne. Ale jak już przywykniesz, to okazuje się, że jest to całkiem fajna koncepcja. I przede wszystkim oszczędzasz w ten sposób dużo czasu i nie musisz ciągle pisać takich samych metod dla wszystkich encji typu findById(). A to naprawdę robi wielką różnicę. Generalnie widzę to jako wyraz sprytu programistów, którzy kiedyś stwierdzili, po co klepać ciągle ten sam kod (tylko dla różnych encji), lepiej zrobić narzędzie, które zrobi to za nas <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 

Takie podejście znajdziesz też w kliencie http &lt;a href=&quot;https://nullpointerexception.pl/feign-deklaratywny-klient-http/&quot;&gt;Feign&lt;/a&gt;, o którym tez już pisałem.

&quot;Trudno mi sobie wyobrazić że gdzieś pod spodem w kodzie Springa jest kod będący implementacją do interfejsów które dopiero powstaną.&quot;
Każdy z nowo powstałych interfejsów musi dziedziczyć, po jakimś interfejscie Spring Data np. JpaRepository. Więc implemnentacj jest tak naprawdę dla interfejsu JpaRepository, Ty swoim interfejsem pokazujesz Spring Data dla jakiego typu będzie musiał stworzyć implementację(to tak trochę w uproszczeniu). 
Polecam także zajrzeć do klasy SimpleJpaRepository, która jest odpowiedzialna za domyślną implementację dla interfejsów w Spring Data.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-3508">michael112</a>.</p>
<p>Na początku oczywiście może wydawać się to dziwaczne. Ale jak już przywykniesz, to okazuje się, że jest to całkiem fajna koncepcja. I przede wszystkim oszczędzasz w ten sposób dużo czasu i nie musisz ciągle pisać takich samych metod dla wszystkich encji typu findById(). A to naprawdę robi wielką różnicę. Generalnie widzę to jako wyraz sprytu programistów, którzy kiedyś stwierdzili, po co klepać ciągle ten sam kod (tylko dla różnych encji), lepiej zrobić narzędzie, które zrobi to za nas 😉 </p>
<p>Takie podejście znajdziesz też w kliencie http <a href="https://nullpointerexception.pl/feign-deklaratywny-klient-http/">Feign</a>, o którym tez już pisałem.</p>
<p>&#8222;Trudno mi sobie wyobrazić że gdzieś pod spodem w kodzie Springa jest kod będący implementacją do interfejsów które dopiero powstaną.&#8221;<br />
Każdy z nowo powstałych interfejsów musi dziedziczyć, po jakimś interfejscie Spring Data np. JpaRepository. Więc implemnentacj jest tak naprawdę dla interfejsu JpaRepository, Ty swoim interfejsem pokazujesz Spring Data dla jakiego typu będzie musiał stworzyć implementację(to tak trochę w uproszczeniu).<br />
Polecam także zajrzeć do klasy SimpleJpaRepository, która jest odpowiedzialna za domyślną implementację dla interfejsów w Spring Data.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: michael112		</title>
		<link>https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-3508</link>

		<dc:creator><![CDATA[michael112]]></dc:creator>
		<pubDate>Thu, 23 Sep 2021 08:26:53 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1286#comment-3508</guid>

					<description><![CDATA[Dla mnie jest to zwyczajnie dziwaczna koncepcja że programista pisze interfejs, a nie jego implementację.
Wielokrotnie zdarzało mi się robić odwrotnie, tj. pisać implementację do gotowych interfejsów, albo też i jedno i drugie.
Trudno mi sobie wyobrazić że gdzieś pod spodem w kodzie Springa jest kod będący implementacją do interfejsów które dopiero powstaną.]]></description>
			<content:encoded><![CDATA[<p>Dla mnie jest to zwyczajnie dziwaczna koncepcja że programista pisze interfejs, a nie jego implementację.<br />
Wielokrotnie zdarzało mi się robić odwrotnie, tj. pisać implementację do gotowych interfejsów, albo też i jedno i drugie.<br />
Trudno mi sobie wyobrazić że gdzieś pod spodem w kodzie Springa jest kod będący implementacją do interfejsów które dopiero powstaną.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-246</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Wed, 06 Nov 2019 13:44:39 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1286#comment-246</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-245&quot;&gt;RSWRC&lt;/a&gt;.

Domyślnie w tym sensie, gdy używasz Spring Data ze Spring Boot to masz skonfigurowanego Springa z Hibernatem. Często używam takiego skrótu myślowego (może trochę błędnie), bo w większości przypadków korzystam ze Spring Boota i wiele osób robi podobnie. Co do innych ORMów to raczej mało kto ich używa, więc nawet o nich nie wspominałem, bo trochę szkoda czasu -  to moje subiektywne spojrzenie na tą sprawę.

I tak Hibernate nie jest integralną częścią Spring Data, jest ORMem, bez którego Spring Data nie może działać. Rozpatrywanie Spring Data bez ORMa (w domyśle Hibernata) nie ma trochę sensu.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-245">RSWRC</a>.</p>
<p>Domyślnie w tym sensie, gdy używasz Spring Data ze Spring Boot to masz skonfigurowanego Springa z Hibernatem. Często używam takiego skrótu myślowego (może trochę błędnie), bo w większości przypadków korzystam ze Spring Boota i wiele osób robi podobnie. Co do innych ORMów to raczej mało kto ich używa, więc nawet o nich nie wspominałem, bo trochę szkoda czasu &#8211;  to moje subiektywne spojrzenie na tą sprawę.</p>
<p>I tak Hibernate nie jest integralną częścią Spring Data, jest ORMem, bez którego Spring Data nie może działać. Rozpatrywanie Spring Data bez ORMa (w domyśle Hibernata) nie ma trochę sensu.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/spring-data-jpa-wprowadzenie/#comment-245</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Wed, 06 Nov 2019 13:24:24 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1286#comment-245</guid>

					<description><![CDATA[&quot;Jest to framework, który bazuje na JPA (Java Persistance Api), którego dostawcą jest domyślnie Hibernate.&quot;

Uważam to za przesadne stwierdzenie. Hibernate jest najpopularniejszą implementacją, ale nie domyślną. Np. implementacją referencyjną JPA jest EclipseLink. Np. WebSphere AS domyślnie używa OpenJPA. I tak dalej. 

&quot;Kolejnym istotnym powodem nieużywania Spring Data jest nieznajomość komponentów, z których jest zbudowane, czyli JPA i Hibernata. &quot;
&quot;Mam nadzieję, że zachęciłem Cię do głębszego poznania tego narzędzia, a także Hibernate’a, który jest jego najważniejszą częścią.&quot; 

Zdecdyowanie Hibernate nie jest częścią Spring Data JPA. Spring Data JPA jest warstwa abstrakcji nad JPA. To czy jako implementacja JPA będzie użyty Hibernate, EclipseLink, OpenJPA czy inna implementacja nie ma znaczenia. Zobacz sobie np. implementację SimpleJpaRepository: https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java - tam nie ma słowa o Hibernate. Wszystkie operacje są wykonywane na interfejsie EntityManager. To czy pod spodem będzie Hibernate czy coś innego - nie ma żadnego znaczenia.]]></description>
			<content:encoded><![CDATA[<p>&#8222;Jest to framework, który bazuje na JPA (Java Persistance Api), którego dostawcą jest domyślnie Hibernate.&#8221;</p>
<p>Uważam to za przesadne stwierdzenie. Hibernate jest najpopularniejszą implementacją, ale nie domyślną. Np. implementacją referencyjną JPA jest EclipseLink. Np. WebSphere AS domyślnie używa OpenJPA. I tak dalej. </p>
<p>&#8222;Kolejnym istotnym powodem nieużywania Spring Data jest nieznajomość komponentów, z których jest zbudowane, czyli JPA i Hibernata. &#8221;<br />
&#8222;Mam nadzieję, że zachęciłem Cię do głębszego poznania tego narzędzia, a także Hibernate’a, który jest jego najważniejszą częścią.&#8221; </p>
<p>Zdecdyowanie Hibernate nie jest częścią Spring Data JPA. Spring Data JPA jest warstwa abstrakcji nad JPA. To czy jako implementacja JPA będzie użyty Hibernate, EclipseLink, OpenJPA czy inna implementacja nie ma znaczenia. Zobacz sobie np. implementację SimpleJpaRepository: <a href="https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java" rel="nofollow ugc">https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java</a> &#8211; tam nie ma słowa o Hibernate. Wszystkie operacje są wykonywane na interfejsie EntityManager. To czy pod spodem będzie Hibernate czy coś innego &#8211; nie ma żadnego znaczenia.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
