본문 바로가기

Homo Faber/Concepts

(12)
Domain Driven Design(1) - Association 모델링과 구현간의 상호작용은 객체간의 연관(association)에서 특히 주의해야 한다. 모델에서 모든 연결된(traversable) 연관에 대해서 동일한 속성들을 가지는 소프트웨어 메커니즘이 있다. 고객과 판매 응대자 간의 연관을 나타내는 모델은 두가지에 대응된다. 하나는 개발자가 두개의 실제적인 사람들 간의 연관된 것이라고 생각하는 관계를 추상화하는 것이다. 다른 하나는 두개의 자바 객체 간의 객체 포인터나, 데이터베이스 검색에 대한 캡슐화, 혹은 어떤 대응되는 구현에 해당한다. 예를 들어, 일대다 연관은 인스턴스 변수의 collection으로 구현될 수 있다. 하지만 설계는 그처럼 직접적일 필요는 없다. collection이 없을 수 있다. 접근자 메소드는 적당한 레코드를 검색하기 위해서 데이터베..
Hibernate에서 Equals 와 HashCode 자바의 Collection과 관계형 DB (Hibernate)는 통일된 방법으로 객체의 구분을 수행하는데 매우 연관되어 있다. 관계형 DB에서 이는 PK로 하고, 자바에서는 객체의 equals()와 hashCode() 메소드를 사용한다. 다음은 저장(persistent) 클래스에서 equals()와 hashCode()를 구현하는 최적의 방안을 설명한다. 왜 equals()와 hashCode()가 중요한가 보통 대부분의 자바 객체는 객체의 식별자에 근거하여 내장된 equals()와 hashCode()를 제공한다. 따라서 객체에 대해서 new() 를 할 때마다 모든 객체는 서로 다르게 마련이다. 이것인 일반적으로 보통의 자바 프로그램에서 원하는 것이다. 그리고 만일 모든 객체가 메모리에 있다면 이는 좋은 모..
객체지향 어플리케이션에서의 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. 첫번째는 별로 안좋은 의미로 '완고한', '고집이 센' 정도로 받아들일 수 ..

반응형