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

Java Spring JPA

Object Storage Arubacloud
0 głosów
629 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 (270,190 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 (41,050 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 (41,050 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 (270,190 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ź 604 wizyt
pytanie zadane 17 marca 2020 w Java przez Placidus Użytkownik (580 p.)
0 głosów
2 odpowiedzi 248 wizyt
pytanie zadane 28 sierpnia 2018 w Java przez Pablo93 Użytkownik (800 p.)
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 12 maja 2023 w Java przez Mikołaj Pątkowski Użytkownik (530 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...