Przede wszystkim jeszcze jeden szczegół, bo odnoszę wrażenie, że być może tego nie rozumiesz. To o co pytasz dotyczy JPA (Java Persistance API), które ze Springiem za wiele nie ma wspólnego, prócz tego, że SPRING DATA JPA dostarcza pewnych mechanizmów, które upraszczają korzystanie z JPA. Samo JPA to jest osobna specyfikacja, której zadaniem jest dostarczenie API (czyli zbioru reguł i interfejsów), ułatwiającego mapowanie obiektowo relacyjne (ORM). Czyli zmiany tabeli bazy danych na klasę Javy i odwrotnie. Tak jak wspomniał marcin99b, te dwie adnotacje służą do utworzenia/zmapowania relacji jeden-do-wielu. Co to są relacje i jakie się rozróżnia musisz doszukać sam. Jedynie o czym wspomnę to to, że w teorii baz danych nie rozróżnia się jeden-do-wielu i wiele-do-jednego tak jak to jest zrobione w JPA.
Ta dwustronność polega na tym, że np. jeśli mamy klienta, który może coś kupić to oznacza to, że jeden klient może kupić wiele razy, a wiele zakupów należy do jednego klienta. I bardzo często w programie będzie Ci potrzebna informacja o zakupach danego klienta i w JPA wymyślili, że zrobią to w ten sposób, że relacja jeden-do-wielu może być dwustronna. Dzięki temu pobierając dane klienta (tam imię nazwisko itd.) możesz od razu pobrać informacje o jego zakupach:
@Entity
class Client
{
@Id
private Long id;
private String name;
@OneToMany
List<Transaction> transactions;
}
@Entity
class Transaction
{
@Id
private Long id;
@ManyToOne
private Client client;
}
W bazie danych natomiast odwzorowane jest to w ten sposób, że w tabeli Transaction znajduje się pole client_id. I to client_id odwołuje się do konkretnego rekordu z tabeli Client. Poczytaj sobie ogólnie o relacyjnych bazach danych, a to zrozumiesz.