<?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: Hibernate &#8211; najczęściej popełniane błędy	</title>
	<atom:link href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/feed/" rel="self" type="application/rss+xml" />
	<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/</link>
	<description>Blog o programowaniu w Javie</description>
	<lastBuildDate>Fri, 04 Aug 2023 17:06:51 +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/hibernate-najczesciej-popelniane-bledy/#comment-1066</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Wed, 01 Apr 2020 12:55:46 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-1066</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-1065&quot;&gt;grzes&lt;/a&gt;.

Jasne zabrakło tej adnotacji ;) Dopisane]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-1065">grzes</a>.</p>
<p>Jasne zabrakło tej adnotacji 😉 Dopisane</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: grzes		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-1065</link>

		<dc:creator><![CDATA[grzes]]></dc:creator>
		<pubDate>Wed, 01 Apr 2020 12:44:04 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-1065</guid>

					<description><![CDATA[Jak dla mnie zabrakło adnotacji @Entity na class, no chyba że chciałeś się pozbyć nadmiarowych adnotacji, ale automagiczne mapowanie pól klasy na pola bazy działa tylko wtedy.

btw i ten 
@AllArgsConst
Kto tego używa na encjach? Pierwszy raz widzę taki pomysł ;)]]></description>
			<content:encoded><![CDATA[<p>Jak dla mnie zabrakło adnotacji @Entity na class, no chyba że chciałeś się pozbyć nadmiarowych adnotacji, ale automagiczne mapowanie pól klasy na pola bazy działa tylko wtedy.</p>
<p>btw i ten<br />
@AllArgsConst<br />
Kto tego używa na encjach? Pierwszy raz widzę taki pomysł 😉</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-522</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 14:23:55 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-522</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-520&quot;&gt;RSWRC&lt;/a&gt;.

Dzięki za komentarz ;) Tak, to prawda, że trzeba wiedzieć jak to działa, żeby tego prawidłowo używać.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-520">RSWRC</a>.</p>
<p>Dzięki za komentarz 😉 Tak, to prawda, że trzeba wiedzieć jak to działa, żeby tego prawidłowo używać.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-521</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 14:18:32 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-521</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-519&quot;&gt;RSWRC&lt;/a&gt;.

W artykule chodziło mi o użycie adnotacji @Column bez żadnych parametrów, co nie daje żadnego efektu, lub tylko z parametrem name co jest nadmiarowe moim zdaniem. Jeśli używasz tej adnotacji, żeby określić pewne parametry to jest jak najbardziej ok. 

Co do migracji to często występują jakieś przełomowe zmiany pomiędzy &quot;dużymi&quot; wersjami. I zastanów się czy nie lepiej jest wykonać pewną pracę przy migracji raz(może nawet trzeba będzie zmieniać nazwy kolumn) zamiast skazywać się na ciągłe dodawanie do encji @Column(name = &quot;nazwa kolumny&quot;).]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-519">RSWRC</a>.</p>
<p>W artykule chodziło mi o użycie adnotacji @Column bez żadnych parametrów, co nie daje żadnego efektu, lub tylko z parametrem name co jest nadmiarowe moim zdaniem. Jeśli używasz tej adnotacji, żeby określić pewne parametry to jest jak najbardziej ok. </p>
<p>Co do migracji to często występują jakieś przełomowe zmiany pomiędzy &#8222;dużymi&#8221; wersjami. I zastanów się czy nie lepiej jest wykonać pewną pracę przy migracji raz(może nawet trzeba będzie zmieniać nazwy kolumn) zamiast skazywać się na ciągłe dodawanie do encji @Column(name = &#8222;nazwa kolumny&#8221;).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-520</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 14:03:55 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-520</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-518&quot;&gt;Mateusz Dąbrowski&lt;/a&gt;.

W zeszłym tygodniu był problem z @Equals i @Hashcode gdzie przez stosowanie tych annotacji duplikowały się encje przy zapisie do DB. Wywalenie tych annotacji i ręczne napisanie equalsa naprawiło problem. Inny problem niedawno był jak było @ToString i była kolekcja @OneToMany i Hibernate wpadł w jakąś nieskończoną pętlę przy próbie wygenerowanie toStringa. Ręczny toString z pominięciem tej listy pomógł. 
Na stacku jest parę problemów z Hibernate i Lombokiem: https://www.google.com/search?q=hibernate+lombok+problem+site:stackoverflow.com

Jeden kwiatek nie związany bezpośrednio z Lombok i Hibernate: 
Miej w klasie (encji) dwa pola stringowe jedno po drugim:
private String fieldA;

prrivate String fieldB:

Zastosuj na klasie @AllArgsConstructor. Wykorzystaj ten kontstruktor i zapisz dane do bazy. Następnie zamień kolejnością te pola, zbuilduj i zapisz ponownie dane. Następnie sprawdź w jakich kolumnach wylądowały dane z pól fieldA i fieldB przy drugim zapisie ;-)

Jeśli się wie jak to wszystko działa to można stosować. W mojej pracy się zrobił hype na lomboka w ostatnim roku. Niestety koledzy przychodzil kilka razy z podobnymi problemami jak opisanymi wyżej.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-518">Mateusz Dąbrowski</a>.</p>
<p>W zeszłym tygodniu był problem z @Equals i @Hashcode gdzie przez stosowanie tych annotacji duplikowały się encje przy zapisie do DB. Wywalenie tych annotacji i ręczne napisanie equalsa naprawiło problem. Inny problem niedawno był jak było @ToString i była kolekcja @OneToMany i Hibernate wpadł w jakąś nieskończoną pętlę przy próbie wygenerowanie toStringa. Ręczny toString z pominięciem tej listy pomógł.<br />
Na stacku jest parę problemów z Hibernate i Lombokiem: <a href="https://www.google.com/search?q=hibernate+lombok+problem+site:stackoverflow.com" rel="nofollow ugc">https://www.google.com/search?q=hibernate+lombok+problem+site:stackoverflow.com</a></p>
<p>Jeden kwiatek nie związany bezpośrednio z Lombok i Hibernate:<br />
Miej w klasie (encji) dwa pola stringowe jedno po drugim:<br />
private String fieldA;</p>
<p>prrivate String fieldB:</p>
<p>Zastosuj na klasie @AllArgsConstructor. Wykorzystaj ten kontstruktor i zapisz dane do bazy. Następnie zamień kolejnością te pola, zbuilduj i zapisz ponownie dane. Następnie sprawdź w jakich kolumnach wylądowały dane z pól fieldA i fieldB przy drugim zapisie 😉</p>
<p>Jeśli się wie jak to wszystko działa to można stosować. W mojej pracy się zrobił hype na lomboka w ostatnim roku. Niestety koledzy przychodzil kilka razy z podobnymi problemami jak opisanymi wyżej.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-519</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 13:49:36 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-519</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-517&quot;&gt;Mateusz Dąbrowski&lt;/a&gt;.

Racja, wersji hibernate&#039;a nie zmienia się często, ale jak zmieniasz to wewnętrzne zachowanie hibernate może się zmienić. Takim wewnętrznym zachowaniem są np. Naming Strategies. Duża zmiana nastąpiła np. przy przejściu z 4.3 na 5.0: https://github.com/hibernate/hibernate-orm/blob/5.0/migration-guide.adoc#naming-strategies. Bierzesz nową wersję Hibernate&#039;a i nagle Ci się schema nie waliduje. Nie chcę przy upgrade Hibernate&#039;a musieć zmieniać strukturę bazy. 
Zresztą nie podając @Column nie mam możliwości ustawienia czy kolumna jest not null. Nie mogę ustawić długości np. pola VARCHAR - po co mam PESEL zapisywać w kolumnie o długości 255? Nie mogę ustawić sobie prostego unique indexu na wyżej rzeczonym PESELu. Przy BigDecimalach nie mogę podać skali i precyzji.
Nie zgadzam się z tym, że powinno się dążyć do eliminacji tej i innych annotacji określających strukturę bazy. Wręcz przeciwnie. Zresztą podajesz też wyżej przykład z @JoinColumn(name=&quot;user_id&quot;) gdzie podajesz nazwę kolumny FK. Będą konsekwentnym powinieneś tego name&#039;a nie podawać.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-517">Mateusz Dąbrowski</a>.</p>
<p>Racja, wersji hibernate&#8217;a nie zmienia się często, ale jak zmieniasz to wewnętrzne zachowanie hibernate może się zmienić. Takim wewnętrznym zachowaniem są np. Naming Strategies. Duża zmiana nastąpiła np. przy przejściu z 4.3 na 5.0: <a href="https://github.com/hibernate/hibernate-orm/blob/5.0/migration-guide.adoc#naming-strategies" rel="nofollow ugc">https://github.com/hibernate/hibernate-orm/blob/5.0/migration-guide.adoc#naming-strategies</a>. Bierzesz nową wersję Hibernate&#8217;a i nagle Ci się schema nie waliduje. Nie chcę przy upgrade Hibernate&#8217;a musieć zmieniać strukturę bazy.<br />
Zresztą nie podając @Column nie mam możliwości ustawienia czy kolumna jest not null. Nie mogę ustawić długości np. pola VARCHAR &#8211; po co mam PESEL zapisywać w kolumnie o długości 255? Nie mogę ustawić sobie prostego unique indexu na wyżej rzeczonym PESELu. Przy BigDecimalach nie mogę podać skali i precyzji.<br />
Nie zgadzam się z tym, że powinno się dążyć do eliminacji tej i innych annotacji określających strukturę bazy. Wręcz przeciwnie. Zresztą podajesz też wyżej przykład z @JoinColumn(name=&#8221;user_id&#8221;) gdzie podajesz nazwę kolumny FK. Będą konsekwentnym powinieneś tego name&#8217;a nie podawać.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-518</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 12:58:28 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-518</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-516&quot;&gt;RSWRC&lt;/a&gt;.

Używałem Lomboka z Hibernate i szczerze mówiąc nie miałem, większych problemów z tym połączeniem. Może podzielisz się jakimiś szczegółami. Chętnie poczytam.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-516">RSWRC</a>.</p>
<p>Używałem Lomboka z Hibernate i szczerze mówiąc nie miałem, większych problemów z tym połączeniem. Może podzielisz się jakimiś szczegółami. Chętnie poczytam.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: Mateusz Dąbrowski		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-517</link>

		<dc:creator><![CDATA[Mateusz Dąbrowski]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 12:54:21 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-517</guid>

					<description><![CDATA[W odpowiedzi do &lt;a href=&quot;https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-515&quot;&gt;RSWRC&lt;/a&gt;.

&lt;blockquote&gt;zmieniasz wersję hibernate’a, zmieniasz PhysicalNamingStrategy&lt;/blockquote&gt; 
Wersji Hibernate&#039;a nie zmienia się aż tak często. Pytanie po co zmieniasz PhysicalNamingStrategy? Jak nie zmienisz nie będziesz miał z tym problemu.]]></description>
			<content:encoded><![CDATA[<p>W odpowiedzi do <a href="https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-515">RSWRC</a>.</p>
<blockquote><p>zmieniasz wersję hibernate’a, zmieniasz PhysicalNamingStrategy</p></blockquote>
<p>Wersji Hibernate&#8217;a nie zmienia się aż tak często. Pytanie po co zmieniasz PhysicalNamingStrategy? Jak nie zmienisz nie będziesz miał z tym problemu.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-516</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 12:44:48 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-516</guid>

					<description><![CDATA[Do listy błędów bym jeszcze dodał używanie Lombok&#039;a w encjach. Takie kwiatki u nas wychodzą w pracy, że szok. Im mniej doświadczony programista tym dłuższe dochodzenie o co chodzi.]]></description>
			<content:encoded><![CDATA[<p>Do listy błędów bym jeszcze dodał używanie Lombok&#8217;a w encjach. Takie kwiatki u nas wychodzą w pracy, że szok. Im mniej doświadczony programista tym dłuższe dochodzenie o co chodzi.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Autor: RSWRC		</title>
		<link>https://nullpointerexception.pl/hibernate-najczesciej-popelniane-bledy/#comment-515</link>

		<dc:creator><![CDATA[RSWRC]]></dc:creator>
		<pubDate>Tue, 04 Feb 2020 12:42:00 +0000</pubDate>
		<guid isPermaLink="false">http://nullpointerexception.pl/?p=1808#comment-515</guid>

					<description><![CDATA[Użycie metody save() - bez @Transactional nad taką metodą/klasą się nie zapisze ;-) Wtedy save jest potrzebny.

Niepotrzebna adnotacja @Column - zmieniasz wersję hibernate&#039;a, zmieniasz PhysicalNamingStrategy i jesteś w ciemnej czarnej D. Albo masz pole, które Ci wygeneruje nazwę kolumny jak keyword zastrzeżony w danym serwerze BD. Nie musi to być dzisiaj. Klient sobie strzela upgrade SQL Servera z 2005 na 2019 - bum. Analogicznie można by zaproponować rezygnację z annotacji @Table(name=... . 
Osobiście jestem fanem jak najsztywniejszego określenia struktury bazy w encji, łącznie z nazwami FK, indexami, itd. Daje mi to większe poczucie bezpieczeństwa.]]></description>
			<content:encoded><![CDATA[<p>Użycie metody save() &#8211; bez @Transactional nad taką metodą/klasą się nie zapisze 😉 Wtedy save jest potrzebny.</p>
<p>Niepotrzebna adnotacja @Column &#8211; zmieniasz wersję hibernate&#8217;a, zmieniasz PhysicalNamingStrategy i jesteś w ciemnej czarnej D. Albo masz pole, które Ci wygeneruje nazwę kolumny jak keyword zastrzeżony w danym serwerze BD. Nie musi to być dzisiaj. Klient sobie strzela upgrade SQL Servera z 2005 na 2019 &#8211; bum. Analogicznie można by zaproponować rezygnację z annotacji @Table(name=&#8230; .<br />
Osobiście jestem fanem jak najsztywniejszego określenia struktury bazy w encji, łącznie z nazwami FK, indexami, itd. Daje mi to większe poczucie bezpieczeństwa.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
