본문 바로가기

ORM

(4)
Hibernate 테스팅 - Unitils 사용하기 Hibernate의 최대 장점은 아마도 어떠한 DB를 사용하더라도 코드의 변화가 적다는 것이다. 따라서, 테스팅에서도 실제 DB를 사용하지 않더라도 코딩이 가능하다. 여기서는 Hibernate와 Spring을 사용해서 테스팅 하는 예제를 설명하겠다. (도메인 모델은 이전에 설명한 일대다 관계의 예제) Spring Framework에서는 ORM과 관련된 Support 클래스를 제공하고 있는데, Hibernate 3에 대해서는 org.springframework.orm.hibernate3.support.HibernateDaoSupport 와 같은 지원 클래스를 제공한다. 우선, 데이터 리소스를 접근하는 인터페이스를 다음과 같이 정의할 수 있다. public interface SaveRepository { b..
객체지향 어플리케이션에서의 Persistence Persistence에 대해서 Java Persistence with Hibernate를 쓴 Christian Bauer는 다음과 같이 설명하고 있다. 객체지향 어플리케이션에서 persistence는 객체를 생성한 프로세스보다 객체를 오래 남게한다(outlive). 객체의 상태는 디스크에 저장될 수 있으며, 동일한 상태를 가지는 객체는 미래 시점에 동일한 지점에서 다시 생성될 수 있다. 이는 단일 객체에 국한되지 않으며 서로 연결된 객체의 전체 네트워크는 저장상태로 될 수 있으며 이후에 새로운 프로세스에서 다시 생성될 수 있다. 대부분의 객체들은 저장상태(persistent)가 아니며, 임시적인(transient) 객체는 이를 초기화했던 프로세스의 생명에 따라서 좌우되는 한정된 생명기간을 가진다. 대부분..
Persistence를 어떻게 번역해야하나? EJB 3 가 나오면서 Java Persistence API (JPA)가 등장하게 되었다. Persistent 는 Cobuild 사전에 다음과 같이 정의되어 있다. 1. Something that is persistent continues to exist or happen for a long time; used especially about bad or undesirable states or situations. 2. Someone who is persistent continues trying to do something, even though it is difficult or other people are against it. 첫번째는 별로 안좋은 의미로 '완고한', '고집이 센' 정도로 받아들일 수 ..
Hibernate3 사용시 Join 테이블에 FK 이외의 컬럼이 있는 경우 매핑 ORM을 사용하다 보면 항상 겪는 문제지만, 다대다(many-to-many) 관계를 객체와 어떻게 매핑할 것인가이다. 물론, 객체 입장에서는 두 객체간의 Collection 문제지만, DB 입장에서는 항상 Join 테이블이 끼어 있어서 이를 해결하기간 웬만해서는 쉽지 않다. Hibernate3는 EJB3의 JPA(Java Persistence API)의 구현체로 이에 대한 문제를 다음과 같이 해결하고 있다. 위의 그림과 같이 Category에 Item을 추가할 때마다 어떤 정보가 필요하다고 가정하자. 위의 구조를 자바 클래스에 매핑하는 데에 두가지 방법이 있다. 첫번째 방법은 join 테이블에 대한 중간의 entity 클래스를 사용하여 일대다(one-to-many) 관계로 매핑하는 것이다. 두번째 방법은..

반응형