komunikacja między użytkownikami

0

Witam, potrzebuje pomocy a mianowicie, mam utworzoną aplikacje gdzie trzeba się zalogować i załóżmy że zaloguje się użytkownik A i chce wysłać wiadomość do użytkownika B. Potem użytkownik A się wylogowuje a użytkownik B po zalogowaniu dostaję wiadomość od A.
Jak mam stworzyć taką zależność? Czego użyć? Może jakieś małe podpowiedzi?

Z góry dziękuje za pomoc

1

Moim zdaniem to nie jest pytanie dotyczące Java, tylko SQL. Bo pewnie te wszystkie wiadomości będziesz trzymać w bazie. Musisz zaprojektować jakoś tabele, żeby uwzględniała takie dane, jak nadawca, odbiorca, data wysłania, treść oraz data odczytania.

Z poziomu aplikacji właściwie jedynie musisz pilnować, żeby w chwili odczytania wiadomości przez użytkownika dodać stosowną informację do bazy.

0

a czy mógłbym prosić o pomoc w tej sprawie? rozumiem że tworze tabele z nadawca, odbiorca, trescią, datą wysłania oraz datą odczytania. (nie kojarzę póki co jak to zrobić) wtedy odnoszę się do tej bazy. Ale jak w bazie zapisywać wiadomość? jako plik i normalnie jako treść? i czy jeżeli użytkownik dostanie więcej wiadomości np od A, B , C użytkownika to czy te wiadomości się nie połączą i będzie to chaotyczne?

0

Dlaczego chcesz łączyć wiadomości w jedną w bazie?

Jak wyślesz komuś wiadomość SMS, a potem drugą, to odbiorca dostanie dwie wiadomości SMS. Nawet jak w jego fancy telefonie z Androidem czy iOS pokażą mu się sklejone w jeden "dymek", to nadal są konceptualnie dwie odrębne wiadomości, następujące po sobie. Tak samo z Messengerem.

Jeden komunikat - jeden wpis do bazy. ID, kto, do kogo, kiedy, treść. Potem będziesz chciał zaimplementować powiadomienia i jak pokażesz podgląd tej nowej wiadomości, jeśli będzie sklejona z esejem z poprzedniej? :P

0

czy ktoś jest w stanie podesłać jakiś link jak to wszystko ustawić w sql??

1
rchudy napisał(a):

czy ktoś jest w stanie podesłać jakiś link jak to wszystko ustawić w sql??

Chyba nie chcesz, żebyśmy Ci tu wkleili dumpa gotowej bazy? Robisz dwie tabele, w tabeli z wiadomościami wrzucasz kolumnę np. z ID nadawcy, zakładasz sobie klucz obcy, którym zwiążesz kolumny z ID użytkownika w tabeli użytkowników, powtarzasz czynność dla odbiorcy i tyle.

Jak będziesz miał problem z czymś konkretnym, to wtedy przyjdź. Opisz, co próbowałeś zrobić, z czym masz problem, jaki dostajesz błąd itp. a nie "chciałbym zrobić to i to, dejcie przykłady". A póki co masz i ucz się:

https://www.w3schools.com/sql/default.asp

2

W jednym z komentarzy napisałeś "mam zrobiony w javie aplikacje okienkowa z logowaniem gdzie dane są pobierane z bazy danych (z tabeli gdzie jest imie nazwisko id haslo )".

Skoro masz tabele z danymi usera, dlaczego nie możesz zrobić analogicznej tabeli ale dla wiadomości? Wczytaj się w to co napisał @superdurszlak oraz poczytaj w internecie o relacjach wiele do wielu.
Wydaje mi się, że na tym etapie nauki nie ma co wrzucać noSQL. Tych wiadomości i tak nie będzie multum w takiej apce, więc relacyjna baza danych spokojnie sobie poradzi.

0

W skrócie mówiąc..

MariaDB [(none)]> create database myapp;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> use myapp;
Database changed
MariaDB [myapp]> create table User(id int not null auto_increment, login varchar(32) not null, pass varchar(64) not null, primary key(id));
Query OK, 0 rows affected (0.42 sec)

MariaDB [myapp]> create table Message(id int not null auto_increment, title varchar(255), content text, sender_id int not null, receiver_id int not null, primary key(id));
Query OK, 0 rows affected (0.35 sec)

MariaDB [myapp]> alter table Message add foreign key(sender_id) references User(id);
Query OK, 0 rows affected (0.92 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [myapp]> alter table Message add foreign key(receiver_id) references User(id);
Query OK, 0 rows affected (1.02 sec)               
Records: 0  Duplicates: 0  Warnings: 0

a później zabawa z hibernate :)

0

Proszę o pomoc, Mam okno logowania z użytkownikami z bazy danych i po sprawdzeniu czy wpisane hasło zgadza się z danym użytkownikiem kodem

       baza = new MojaBaza();
       baza.setVisible(true);
       baza.db = db;
       this.dispose();

przechodzę do kolejnego okna JFrame. W jaki sposób mogę zapamiętać który użytkownik jest zalogowany w kolejnym oknie? Najlepiej bez używania Hibernate czy Springa.

0

Czy ja rozumiem dobrze ze:

  • zapisujesz hasła w bazie plaintextem
  • aplikacja kliencka łączy się bezpośrednio do bazy (więc ma credentiale do twojej bazy wpisane na sztywno)?

:D :D

A co do twojego pytania, powinieneś w aplikacji mieć jakiś SessionState w warstwie logiki i tam taką informacje przechowywać. UI, czyli te twoje okienka, powinny po prostu korzystać z tej warstwy a nie robić nic samemu. Okienko to okienko, ma prezentować dane / zbierać eventy od usera, a nie realizować jakąś logikę.

0

Szczerze to nie za bardzo wiem o co chodzi z tą sesją. Czy ktoś może podać przykład jak stworzyć taką sesje nie używając Springa? Chciałbym tylko żeby w kolejnym oknie po zalogowaniu można było się odnieść to wybranej wcześniej osoby

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