본문 바로가기

전체 글196

Hibernate에서 Equals 와 HashCode 자바의 Collection과 관계형 DB (Hibernate)는 통일된 방법으로 객체의 구분을 수행하는데 매우 연관되어 있다. 관계형 DB에서 이는 PK로 하고, 자바에서는 객체의 equals()와 hashCode() 메소드를 사용한다. 다음은 저장(persistent) 클래스에서 equals()와 hashCode()를 구현하는 최적의 방안을 설명한다. 왜 equals()와 hashCode()가 중요한가 보통 대부분의 자바 객체는 객체의 식별자에 근거하여 내장된 equals()와 hashCode()를 제공한다. 따라서 객체에 대해서 new() 를 할 때마다 모든 객체는 서로 다르게 마련이다. 이것인 일반적으로 보통의 자바 프로그램에서 원하는 것이다. 그리고 만일 모든 객체가 메모리에 있다면 이는 좋은 모.. 2008. 2. 21.
DB Tuning 기본 원칙들 원칙의 힘 튜닝은 비공식적인 상식에 기초한다. 이는 쉬운 반면에 어려운 일이다. 튜닝은 튜닝하는 사람이 복잡한 공식이나 이론을 통해 씨름할 필요가 없기 때문에 쉽다. 많은 학자들과 연구원들은 일반적으로 수학적인 기초에 근거하여 튜닝과 쿼리 처리를 해결하려고 한다. 이러한 노력들이 더 복잡해지는 것은 일반적으로 실현 불가능한 가정에 근거하고 있기 때문이다. 튜닝은 상식이 내재하고 있는 원리와 지식을 통해 어플리케이션, DB 소프트웨어, OS, 물리적인 하드웨어 등을 넓고 깊게 이해하는 것이 필요하기 때문에 어렵다. 대부분의 튜닝 책들은 실질적인 원칙들을 제공하고 있지만 이들의 한계에 대해서는 언급하지 않는다. 예를 들어, 책에서는 트랜잭션 응답 시간이 중요한 경우 집합(aggregate) 함수(avg와 같.. 2008. 2. 21.
Spring에서 annotation 태그 사용하기 (3) CustomerAutowireConfigurer CustomerAutowireConfigurer는 자동엮음(autowiring) 프로세스를 수정하여 만들 수 있게 하는 BeanFactoryPostProcessor이다. 특히, 만들어진 qualifier annotation 유형이 Spring의 @Qualifier annotation을 사용하지 않는다고 하더라도 등록이 가능하다. example.CustomQualifier 어플리케이션 컨텍스트에 대해 활성화되는 AutowireCadidateResolver의 특별한 구현체는 자바 버전에 달려있음을 유의하라. 만일 자바 5 이전에서 실행한다면 qualifier annotation은 지원이 안되며, 자동엮음 대상 후보들은 각각의 빈 정의의 'autowire-can.. 2008. 2. 21.
설계 원리 (Design Principles) 현재까지 잘 알려진 설계 원리들은 다음과 같다. DRY (Don't Repeat Yourself) - 한번 이상 동일하거나 유사한 코드를 작성하지 말라. 'Once and Only Once' 원리라고도 함. SCP (Speaking Code Principle) - 코드는 그 목적과 상호교류해야 함. 코드에 있는 주석은 코드가 그 목적과 비효율적으로 상호교류함을 나타낼 수 있음. OCP (Open Closed Principle) - 설계 단위는 변화(adjustment)에 열려있어야 함. 그러한 변화(adjustment, 조정)은 기존 클라이언트를 쓸모없게 만들어서는 안됨. 상속은 이러한 목적을 달성하게 하는 메커니즘 중의 하나임. 하위클래스는 상위클래스의 클라이언트들이 유효하게 유지한 채로 변경이 될 수.. 2008. 2. 21.
반응형