• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java Spring JPA

VPS Starter Arubacloud
0 głosów
564 wizyt
pytanie zadane 19 lipca 2020 w Java przez matiibal Użytkownik (620 p.)
edycja 20 lipca 2020 przez matiibal

Przykładowo mamy encję:
 

@Entity

@Getter

@Setter

public class A

{

@Id

private Long id;

@ManyToMany

private Set<A> listOfA;

}



Czy jest możliwość uniknięcia zapętlenia w momencie, gdy jeden obiekt będzie dla drugiego jednocześnie nadrzędny i podrzędny?

komentarz 19 lipca 2020 przez mbabane Szeryf (79,280 p.)
A jaki konkretnie przypadek chcesz rozwiązać?
komentarz 19 lipca 2020 przez j23 Mędrzec (194,920 p.)
Zła kategoria pytania (które z C/C++ nie ma nic wspólnego).
komentarz 20 lipca 2020 przez matiibal Użytkownik (620 p.)

@mbabane,  sytuacja jest następująca: Mam raport i z raportem powiązane są inne raporty. I w momencie gdy jeden raport jest powiązany z innym to nie występuję zapętlenie. Ale w momencie, gdy jeden raport jest z powiązany z drugim i jednocześnie drugi z pierwszym występuje problem. I zadałem takie pytanie czy istnieje jakiś sposób aby uniknąć takiej sytuacji.
 

komentarz 20 lipca 2020 przez matiibal Użytkownik (620 p.)
Kategoria zmieniona, przez nieuwagę błędnie dodałem
komentarz 20 lipca 2020 przez matiibal Użytkownik (620 p.)
Znalazłem rozwiązanie. Zamiast dawać listę w encji, stworzyłem nową encję zapisująca powiązania. public class Connect{ @Id private Long id; @ManyToOne private A a1; @ManyToOne private A a2; }

1 odpowiedź

+2 głosów
odpowiedź 19 lipca 2020 przez Wiciorny Ekspert (269,120 p.)
edycja 19 lipca 2020 przez Wiciorny

Po pierwsze kod ustaw w odpowiednie Formatowanie, po drugie zmień proszę kategorię. 


Czy jest możliwość uniknięcia zapętlenia w momencie, gdy jeden obiekt będzie dla drugiego jednocześnie nadrzędny i podrzędn

stosując się do zasad programowania, obiekty mając być między sobą NIEZALEŻNE, tzn mogą zawierać sie w sobie i z siebie jakby korzystać czy to dziedziczeniem, czy nawet KOMPOZYCJĄ CZY AGREGACJĄ, ALE WTEDY i tak muszą spełniać np   paradygmat "ISA"  
Dla obiektów bazodanowych, szczególnie nie wolno czegoś takiego robić, aby były możliwości zapętlania, bo to one - potem mogą wpływać na zapętlania w transakcjach 

I nie możesz umieścić mapowania wielu do wielu w Encji, dla tej samej encji  - bo z logicznego pkt. widzenia co to ma być za relacja wiele do wielu ? Relacja X-X JEDNOŚCIOWA jest  RELACJĄ RÓWNOWAŻNOŚCIOWĄ, taką operacje inaczej się rozwiązuje,

komentarz 19 lipca 2020 przez reaktywny Nałogowiec (40,650 p.)

Użyłeś jednego słówka, które dość często się pojawia, ale którego znaczenia nie znam :)

potem mogą wpływać na zapętlania w tranzakcjach 

Jak masz chwilę czasu -> czym są tranzakcje i do czego służą?

komentarz 20 lipca 2020 przez matiibal Użytkownik (620 p.)

@Wiciorny, Dzięki za podpowiedź. Zamiast użycia mapowania wiele do wielu stworzyłem nową encję, która zapisuje powiązania pomiędzy obiektami. 

public class Connect
{
 @Id
 private Long id; 
@ManyToOne
 private A a1; 
@ManyToOne
 private A a2;
 }

 

1
komentarz 20 lipca 2020 przez DedenN Początkujący (400 p.)

@reaktywny, w takim duuużym skrócie, chodzi o to aby operacje które wykonujesz nie były  zawieszone w połowie, a przechodziły w całości  żeby system był spójny, przynajmniej ja to tak rozumiem. Dla przykładu dodanie czegoś do bazy danych wymaga kilku kroków, jeśli podczas któregokolwiek z nich system wykryje niespójne dane (miał być int a jest varchar) to rekord nie zostanie dodany do bazy tylko będzie przywrócony do stanu poprzedniego.  Tutaj jest o tym więcej

 https://kobietydokodu.pl/teoria-it-transakcje/

komentarz 20 lipca 2020 przez reaktywny Nałogowiec (40,650 p.)
Dziękuję za link!

To oczym piszesz, to jest ciekawe, a artykuł pod podanym linkiem - genialny.

Co nieco jeszcze znalazłem na wiki:

https://pl.wikipedia.org/wiki/Transakcja_(informatyka)
komentarz 20 lipca 2020 przez Wiciorny Ekspert (269,120 p.)

@matiibal,

@ManyToOne
 private A a1; 
@ManyToOne
 private A a2;
 }

robiąc coś takiego, nie wiem czy sobie zdajesz sprawę z tego jaki bałagan robisz w bazie i ile tabel tworzysz :)... 

komentarz 22 lipca 2020 przez matiibal Użytkownik (620 p.)

Tworzy się jedna tabela. Nie rozumiem dlaczego w ten sposób robię bałagan w BD, mógłbyś wytłumaczyć bardziej precyzyjnie?

Podobne pytania

0 głosów
1 odpowiedź 545 wizyt
pytanie zadane 17 marca 2020 w Java przez Placidus Użytkownik (580 p.)
0 głosów
2 odpowiedzi 243 wizyt
pytanie zadane 28 sierpnia 2018 w Java przez Pablo93 Użytkownik (800 p.)
0 głosów
1 odpowiedź 153 wizyt
pytanie zadane 12 maja 2023 w Java przez Mikołaj Pątkowski Użytkownik (530 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...