Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zgadzam się, że korzystanie z Hibernate do generowania schematu bazy danych może bardzo ułatwić zarządzanie strukturą bazy danych w projekcie Java. Hibernate umożliwia tworzenie tabel bazy danych bezpośrednio z klas encji w Java, co oznacza, że nie musisz ręcznie pisać skryptów SQL do tworzenia tabel.
- Poniżej znajduje się przykładowy kod, który pokazuje, jak można to zrobić. Rozważmy przykładową bazę danych dla dziennika, z encjami `Student`, `Subject` i `Grade`.
- Zacznijmy od klasy `Student`:
- ```java
- import javax.persistence.*;
- @Entity
- @Table(name = "students")
- public class Student {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- @Column(name = "name")
- private String name;
- // getters and setters
- }
- ```
- Teraz klasa `Subject`:
- ```java
- import javax.persistence.*;
- @Entity
- @Table(name = "subjects")
- public class Subject {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- @Column(name = "name")
- private String name;
- // getters and setters
- }
- ```
- Klasa `Grade`:
- ```java
- import javax.persistence.*;
- @Entity
- @Table(name = "grades")
- public class Grade {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- @ManyToOne
- @JoinColumn(name = "student_id")
- private Student student;
- @ManyToOne
- @JoinColumn(name = "subject_id")
- private Subject subject;
- @Column(name = "grade")
- private Integer grade;
- // getters and setters
- }
- ```
- W powyższym przykładzie użyto adnotacji JPA do zdefiniowania modelu encji. Adnotacje takie jak `@Entity`, `@Table`, `@Id`, `@Column`, `@ManyToOne` i `@JoinColumn` służą do mapowania klas Java na tabele bazy danych. Wartości encji są przechowywane w kolumnach tabeli, a relacje między encjami są reprezentowane przez klucze obce w tabeli.
- Teraz możemy skonfigurować Hibernate do generowania schematu bazy danych z naszych encji. Możemy to zrobić za pomocą pliku konfiguracyjnego Hibernate `hibernate.cfg.xml`:
- ```xml
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- Database connection settings -->
- <property name="connection.driver_class">org.mariadb.jdbc.Driver</property>
- <property name="connection.url">jdbc:mariadb://localhost:3306/mydatabase</property>
- <property name="connection.username">myusername</property>
- <property name="connection.password">mypassword</property>
- <!-- SQL dialect -->
- <property name="dialect">org.hibernate.dialect.MariaDBDialect</property>
- <!-- Echo all executed SQL to stdout -->
- <property name="show_sql">true</property>
- <!-- Update the database schema on startup -->
- <property name="hbm2ddl.auto">update</property>
- <!-- Annotated classes -->
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement