[java] 하이버네이트 매핑과 애노테이션

하이버네이트는 자바 객체를 데이터베이스 테이블과 매핑하고 데이터베이스로부터 객체를 가져오는 기능을 제공합니다. 이를 위해 애노테이션을 사용하여 매핑 정보를 제공해야 합니다.

개체 매핑

하이버네이트는 각각의 개체를 데이터베이스 테이블과 매핑합니다. 아래는 하이버네이트를 사용하여 개체를 매핑하는 간단한 예제입니다.

@Entity
@Table(name = "employees")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    // Getters and setters
}

위의 예제에서 @Entity 애노테이션은 Employee 클래스가 데이터베이스 테이블과 매핑되는 엔티티임을 나타냅니다. @Table 애노테이션은 테이블의 이름을 명시하고, @Id@GeneratedValue 애노테이션은 기본 키를 나타내며 자동 생성되도록 설정합니다. @Column 애노테이션은 각 필드가 데이터베이스 컬럼과 매핑됨을 나타냅니다.

관계 매핑

데이터베이스의 테이블 간의 관계를 나타내기 위해서 하이버네이트는 다양한 애노테이션을 제공합니다. 아래는 일대다 관계를 나타내는 예제입니다.

@Entity
@Table(name = "departments")
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @OneToMany(mappedBy = "department")
    private List<Employee> employees;

    // Getters and setters
}

위의 예제는 Department 클래스가 Employee 클래스와 일대다 관계를 가진다는 것을 나타냅니다. @OneToMany 애노테이션은 일대다 관계를 정의하고, mappedBy 속성은 어떤 필드를 기준으로 관계가 맺어지는지 명시합니다.

결론

하이버네이트를 사용하여 개체를 데이터베이스 테이블과 매핑하고 관계를 정의하기 위해 다양한 애노테이션을 사용할 수 있습니다. 이러한 애노테이션을 적절히 활용하여 객체지향적인 설계를 유지하면서 데이터베이스를 다룰 수 있습니다.

참고문헌: