2.1 Merknad @Entitet, @Tabell
Hvis du vil kartlegge klassen din til en tabell i databasen, må du legge til så mange som 3 merknader til den for dette.
Først må du legge til en merknad til klassen @Entity
. Denne merknaden foran klassen vil fortelle Hibernate at dette ikke bare er en klasse, men en spesiell klasse hvis objekter må lagres i databasen.
Eksempel:
@Entity
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Dette er nok for Hibernate til å behandle objekter av denne klassen på en spesiell måte.
Den andre merknaden er @Table
. Med dens hjelp kan du angi navnet på tabellen i databasen som denne klassen skal knyttes til. Eksempel:
@Entity
@Table(name="user")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Hvis klassenavnet og tabellnavnet er det samme, @Table
kan merknaden utelates.
Dessuten, hvis applikasjonen din fungerer med tabeller fra flere skjemaer samtidig, må du spesifisere i hvilket bestemt skjema tabellen er plassert:
@Entity
@Table(name="user", schema="test")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Ja, alt er så enkelt som det virker.
2.2 @Kolonnekommentar
Den andre viktige tingen å vite er tilordningen av tabellkolonner til klassefelt. I den enkleste versjonen vil Hibernate ganske enkelt kartlegge feltene til enhetsklassen din til kolonnene i den ønskede tabellen.
Hvis du vil kontrollere alle nyansene ved kartlegging, kan du bruke merknaden @Column
. Eksempel:
@Entity
@Table(name="user")
class User {
@Column(name="id")
public Integer id;
@Column(name="name")
public String name;
@Column(name="level")
public Integer level;
@Column(name="created_date")
public Date createdDate;
}
Kommentaren @Column
har forskjellige parametere, nedenfor vil vi vurdere de mest populære av dem:
# | Attributtnavn | Attributttype | Beskrivelse |
---|---|---|---|
1 | Navn | String | Angir tabellkolonnenavnet for klassefeltet |
2 | unik | boolsk | Alle feltverdier må være unike |
3 | nullbar | boolsk | Feltet kan være null |
4 | lengde | int | Maksimal lengde (for strenger) |
La oss legge til noen begrensninger til feltene i User Entity-klassen vår:
- brukernavnet må være unikt og ikke lenger enn 100 tegn
- nivå kan være null
- createDate kan ikke være null
Da blir kommentarene våre:
@Entity
@Table(name="user")
class User {
@Column(name="id")
public Integer id;
@Column(name="name", unique=true, length=100)
public String name;
@Column(name="level", nullable=true)
public Integer level;
@Column(name="created_date", nullable=false)
public Date createdDate;
}
Du kan opprette et objekt av typen User og til og med tilordne alle null- felt til det, men når du prøver å lagre det i databasen, vil Hibernate utføre en sjekk, og hvis noen begrensninger brytes, vil et unntak bli kastet.
2.3 @Id-kommentar
Og en annen viktig kommentar er @Id
. Den kan brukes til å angi primærnøkkelen for en tabell.
Du trenger bare å spesifisere denne merknaden for ønsket felt - og Hibernate vil gjøre alt selv:
@Entity
@Table(name="user")
class User {
@Id
@Column(name="id")
public Integer id;
@Column(name="name")
public String name;
@Column(name="level")
public Integer level;
@Column(name="created_date")
public Date createdDate;
}
Hvis du vil at Hibernate skal generere ID-ene til objektene dine uavhengig når du legger dem til databasen, må du legge til en merknad til - @GeneratedValue
. Da vil vårt eksempel se slik ut:
@Entity
@Table(name="user")
class User {
@Id
@GeneratedValue
public Integer id;
@Column(name="name")
public String name;
@Column(name="level")
public Integer level;
@Column(name="created_date")
public Date createdDate;
}
Vi har utelatt merknaden @Column
for id- feltet her, siden det ikke inneholder verdifull informasjon - feltnavnet og kolonnenavnet i tabellen er det samme, og takket være resten av merknadene forstår Hibernate allerede at vi snakker om en tabell kolonne.
GO TO FULL VERSION