Маленькая статья по Hibernate Bidirectional Association Annotation.
Я здесь кратко описал все Bidirectional Association которые есть у Hibernate посредством Annotation.
1. Hibernate: Annotation one-to-many/many-to-one(foreign-key)
-=Relationship=-
person(one) <-> address(many)
-=DB Schema=-
-=Relationship=-
person(one) <-> address(many)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), primary key (personId) ) create table EVENTS ( id bigint not null, EVENT_DATE timestamp, title varchar(255), personId bigint not null, primary key (id) ) alter table EVENTS add constraint FK7A9AD519B59AA19 foreign key (personId) references Persons(personId)
-=Annotation=-
public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @OneToMany(cascade =CascadeType.ALL,fetch = FetchType.EAGER, mappedBy = "person1") private Listevents = new ArrayList (); } public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") private Long id; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "personId",referencedColumnName = "personId",nullable = false) private Person person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
2. Hibernate: Annotation one-to-many/many-to-one(join table)
-=Relationship=-
Person(one) <-> Event(many)
-=DB Schema=-
-=Relationship=-
Person(one) <-> Event(many)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), primary key (personId) ) create table EVENTS ( eventId bigint not null, EVENT_DATE timestamp, title varchar(255), primary key (eventId) ) create table PersonEvent ( personId bigint, eventId bigint not null, primary key (eventId) ) alter table PersonEvent add constraint FK489E5C25B59AA19 foreign key (personId) references Persons(personId) alter table PersonEvent add constraint FK489E5C25418989BB foreign key (eventId) references EVENTS(eventId)
-=Annotation=-
@Entity @Table(name="Persons") public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @OneToMany(cascade =CascadeType.ALL,fetch = FetchType.EAGER) @JoinTable(name = "PersonEvent" ,joinColumns = @JoinColumn(name = "personId") ,inverseJoinColumns = @JoinColumn(name = "eventId")) private Listevents = new ArrayList (); } @Entity @Table(name = "EVENTS") public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") @Column(name = "eventId") private Long id; @ManyToOne(cascade = CascadeType.ALL) @JoinTable(name = "PersonEvent" ,joinColumns = @JoinColumn(name = "eventId") ,inverseJoinColumns = @JoinColumn(name = "personId")) private Person person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
3. Hibernate: Annotation one-to-one(primary-key)
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), primary key (personId) ) create table EVENTS ( eventId bigint not null, EVENT_DATE timestamp, title varchar(255), primary key (eventId) )
-=Annotation=-
@Entity @Table(name="Persons") public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @OneToOne(cascade = CascadeType.ALL) @PrimaryKeyJoinColumn private Event events; } @Entity @Table(name = "EVENTS") public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") @Column(name = "eventId") private Long id; @OneToOne(cascade = CascadeType.ALL,mappedBy = "events") private Person person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
4. Hibernate: Annotation one-to-one(foreign-key)
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), eventId bigint, primary key (personId) ) create table EVENTS ( eventId bigint not null, EVENT_DATE timestamp, title varchar(255), primary key (eventId) ) alter table Persons add constraint FK3AC8679E418989BB foreign key (eventId) references EVENTS(eventId)
-=Annotation=-
@Entity @Table(name="Persons") public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name= "eventId",referencedColumnName = "eventId") private Event events; } @Entity @Table(name = "EVENTS") public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") @Column(name = "eventId") private Long id; @OneToOne(cascade = CascadeType.ALL,mappedBy = "events") private Person person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
5. Annotation one-to-one(join table)
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
-=Relationship=-
Person(one) <-> Event(one)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), primary key (personId) ) create table EVENTS ( eventId bigint not null, EVENT_DATE timestamp, title varchar(255), primary key (eventId) ) create table PersonEvent ( eventId bigint, personId bigint not null, primary key (personId) ) alter table PersonEvent add constraint FK489E5C25B59AA19 foreign key (personId) references Persons(personId) alter table PersonEvent add constraint FK489E5C25418989BB foreign key (eventId) references EVENTS(eventId)
-=Annotation=-
@Entity @Table(name="Persons") public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @OneToOne(cascade = CascadeType.ALL) @JoinTable(name = "PersonEvent" ,joinColumns = @JoinColumn(name = "personId",referencedColumnName = "personId") ,inverseJoinColumns = @JoinColumn(name = "eventId",referencedColumnName = "eventId")) private Event events; } @Entity @Table(name = "EVENTS") public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") @Column(name = "eventId") private Long id; @OneToOne(cascade = CascadeType.ALL,mappedBy = "events") private Person person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
6. Hibernate: Annotation many-to-many (join table)
-=Relationship=-
Person(many) <-> Event(many)
-=DB Schema=-
-=Relationship=-
Person(many) <-> Event(many)
-=DB Schema=-
create table Persons ( personId bigint generated by default as identity, fName varchar(255), sName varchar(255), primary key (personId) ) create table EVENTS ( eventId bigint not null, EVENT_DATE timestamp, title varchar(255), primary key (eventId) ) create table PersonEvent ( personId bigint not null, eventId bigint not null ) alter table PersonEvent add constraint FK489E5C25B59AA19 foreign key (personId) references Persons(personId) alter table PersonEvent add constraint FK489E5C25418989BB foreign key (eventId) references EVENTS(eventId)
-=Annotation=-
@Entity @Table(name="Persons") public class Person { @Id @GeneratedValue() @Column(name = "personId") private Long id; @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "PersonEvent" ,joinColumns = @JoinColumn(name = "personId") ,inverseJoinColumns = @JoinColumn(name = "eventId")) private Listevents = new ArrayList (); } @Entity @Table(name = "EVENTS") public class Event { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") @Column(name = "eventId") private Long id; @ManyToMany(cascade = CascadeType.ALL,mappedBy = "events") private List person1; }
-=Доступ к объекту=-
person1.getEvents().toString(); event.getPerson1().toString();
Комментариев нет:
Отправить комментарий