Он служит для связи между таблицами? Или для чего вообще? И как физически(в самой бд) происходят связи между таблицами, например когда у меня в одном entity есть объект другого entity. Или когда есть лист с обычными объектами
Он служит именно для того, о чем я написал.
На одну таблицу вы создаете один класс датасета и помечаете его @Entity, что означает: объекты данного класса содержит поля, указанные в таблице бд.
Если в одной entity у вас есть ссылка на другую entity, но при этом в таблице нет столбца 'another_entity', то ничего не будет. Вот этот код:
@Entity
@Table(name="users")
public class UsersDataSet {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
long user_id;
UsersDataSet anotherSet;
}