[java] 자바 객체와 데이터베이스 테이블의 매핑

자바 언어는 객체지향 프로그래밍을 지원하는데, 데이터베이스는 테이블 형태로 데이터를 저장합니다. 이 두 가지를 매핑시켜야 하는 경우가 종종 발생합니다. 이를 위해 자바 퍼시스턴스 API(JPA)와 하이버네이트(Java Hibernate)와 같은 ORM(Object-Relational Mapping) 프레임워크를 사용할 수 있습니다.

이 포스트에서는 자바 객체와 데이터베이스 테이블 간의 매핑을 어떻게 할 수 있는지에 대해 살펴보겠습니다.

1. 어노테이션을 사용한 매핑

JPA와 하이버네이트를 사용하면 @Entity, @Table, @Column과 같은 어노테이션을 이용해 자바 객체를 데이터베이스 테이블에 매핑할 수 있습니다.

예를 들어, 아래의 코드는 자바 객체와 매핑된 데이터베이스 테이블을 보여줍니다.

@Entity
@Table(name = "employees")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "emp_name")
    private String name;
    
    // getters and setters
}

위의 코드에서 @Entity 어노테이션은 이 클래스가 JPA 엔티티임을 나타내고, @Table 어노테이션은 해당 엔티티가 매핑될 데이터베이스의 테이블명을 지정합니다. @Column 어노테이션은 해당 필드가 데이터베이스 컬럼과 매핑됨을 의미합니다.

2. 관계 매핑

데이터베이스 테이블 간의 관계를 자바 객체 간의 관계로 매핑할 수도 있습니다. 예를 들어, 다대일(Many-to-One) 및 일대다(One-to-Many) 관계를 매핑할 수 있습니다.

@Entity
@Table(name = "departments")
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "dept_name")
    private String name;
    
    @OneToMany(mappedBy = "department")
    private List<Employee> employees;
    
    // getters and setters
}

위의 코드에서 @OneToMany 어노테이션은 Department 엔티티와 Employee 엔티티의 일대다 관계를 나타내며, mappedBy 속성은 관계를 관리하는 엔티티의 필드명을 지정합니다.

3. XML 매핑

어노테이션 외에도 하이버네이트를 이용해 XML 파일을 사용하여 매핑하는 방법도 있습니다. XML 파일을 사용하면 매핑 정보를 외부에 저장하여 유연성을 높일 수 있습니다.

<entity-mappings>
    <entity class="com.example.Employee" name="Employee">
        <table name="employees"/>
        <attributes>
            <id name="id">
                <generated-value strategy="IDENTITY"/>
            </id>
            <basic name="name" column="emp_name"/>
        </attributes>
    </entity>
</entity-mappings>

위의 XML 파일은 Employee 엔티티를 employees 테이블에 매핑하는 내용을 담고 있습니다.

결론

이 포스트에서는 자바 객체와 데이터베이스 테이블 간의 매핑을 위해 어노테이션과 XML을 사용하는 방법을 알아보았습니다. JPA와 하이버네이트를 사용하면 간편하게 매핑 작업을 수행할 수 있으며, 이를 통해 객체지향 프로그래밍과 데이터베이스의 관계를 효과적으로 관리할 수 있습니다.

참고 자료