BACKEND/SPRING

데이터 베이스 연동 - 엔티티 설계와 DAO 설계

우진하다 2023. 8. 6. 23:05

엔터티 설계

엔터티는 데이터베이스 테이블을 자바 클래스로 표현하는 것입니다. 
이를 통해 데이터베이스와 객체 지향 프로그래밍 간의 간극을 줄일 수 있습니다.

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "age")
    private int age;

    // 기본 생성자
    public Person() {
    }

    // Getter와 Setter
    // ...
}

 

DAO 설계

DAO는 데이터베이스와의 CRUD 작업을 캡슐화하는 객체입니다. 
DAO를 통해 애플리케이션 코드와 데이터베이스 간의 결합도를 낮추고 유지보수를 용이하게 할 수 있습니다.

public interface PersonDAO {
    void insertPerson(Person person);
    Person getPerson(Long id);
    List<Person> getAllPersons();
    void updatePerson(Person person);
    void deletePerson(Long id);
}
@Repository
public class PersonDAOImpl implements PersonDAO {
    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void insertPerson(Person person) {
        entityManager.persist(person);
    }

    @Override
    public Person getPerson(Long id) {
        return entityManager.find(Person.class, id);
    }

    @Override
    public List<Person> getAllPersons() {
        TypedQuery<Person> query = entityManager.createQuery("SELECT p FROM Person p", Person.class);
        return query.getResultList();
    }

    @Override
    public void updatePerson(Person person) {
        entityManager.merge(person);
    }

    @Override
    public void deletePerson(Long id) {
        Person person = getPerson(id);
        if (person != null) {
            entityManager.remove(person);
        }
    }
}

엔터티 설계: 데이터베이스의 테이블과 매핑될 자바 클래스를 정의하고, JPA 어노테이션을 사용하여 매핑 정보를 제공합니다.
DAO 설계: 데이터베이스와의 상호 작용을 추상화하고 캡슐화하여 애플리케이션의 다른 부분과 독립적으로 작동하게 합니다.