Java 오픈 소스 프로젝트 Hibernate

1)Hibernate 의 미 는 진정한 OOAD 에서 우리 의 디자인 은 먼저 UML 구축 을 하 는 것 이다.마지막 으로 하나의 시스템 을 모든 대상(이것 은 그렇게 간단 하지 않다)과 관련 시 키 고 아 날로 그 로 완전한 디자인 을 나타 낸다.우 리 는 마지막 으로 업무 논 리 를 제어 하 는 유형,업무 데 이 터 를 저장 하 는 유형 module(bean 류)을 얻 을 수 있다.보조 클래스 또는 더 많은(구체 적 인 문 제 는 구체 적 으로 분석 하지만 업무 에 필요 한 데 이 터 를 하나의 클래스 module 로 분류 하 는 것 이 분 층 에 더욱 적합 하 다).데이터 베 이 스 를 저층 으로 실현 할 때 데 이 터 를 얻 거나 데 이 터 를 저장 하기 위해 서 는 데이터 베 이 스 를 조작 하 는 제어 논 리 를 추가 해 야 합 니 다.여기 서 완벽 한 디자인 은 이 를 위해 큰 노력 을 기울 일 것 입 니 다.왜냐하면 당신 이 본 업무 데이터 층 은 복잡 한 모듈 이기 때 문 입 니 다.대상 을 대상 으로 하 는 관점 에서 볼 때 우리 UML 도표 에 있 는 것 입 니 다.업무 데이터 층 은 단지 데이터 모듈 일 뿐이다.Hibernate 는 업무 데이터 층 이라는 매우 복잡 한 모듈 의 밑바닥 실현 을 해결 해 주 었 습 니 다.지금 우 리 는 바깥쪽 에 우리 의 대표 데이터 클래스 를 감 싸 기만 하면 됩 니 다.2)대상 모델 과 관계 데이터베이스 모델 의 차 이 는 내 가 하 이 버 네 이 트 를 탐색 하 는 느낌 을 쓰기 전에 이 절 을 쓰 는 것 이 필요 하 다 고 생각한다.문제 연 구 는 호기심 을 가지 고 연구 하 는 것 보다 훨씬 의미 가 깊다.문제 분야:관계 형 데이터 베 이 스 는 데 이 터 를 저장 하 는 가장 좋 은 선택 이지 만 OO 기술 이 날로 발전 하면 서 persisitent 층 에서 관계 형 데이터 베 이 스 를 디자인 하 는 시스템 은 OO 시스템 과 어 울 리 지 않 습 니 다.OOAD 가 가득 한 당신 이 하늘 을 나 는 SQL 문 구 를 어떻게 격 리 할 것 인 가 를 생각 할 때 얼마나 고통스러운 표정 인지 상상 할 수 있 습 니 다.업무 층 의 디자인 이 아무리 완벽 하 더 라 도 데 이 터 를 진정 으로 저장 하거나 불 러 올 때 당신 이 직면 하 는 것 은 봉 인 된 데이터 일 뿐 입 니 다.이 데 이 터 는 JDBC 에서 대상 을 완전히 잃 었 습 니 다.(이곳 의 대상 을 업무 대상 이 라 고 부 르 는 것 이 더 정확 할 수도 있 습 니 다)의 의 미 는 전체적인 OOAD 는 여기까지 입 니 다.왜 이런 상황 을 만 들 었 을 까?원인 은 대상 모델 과 관계 데이터베이스 모델 의 근본 적 인 디자인 체계 간 의 차이 이다.대상 모델 과 관계 데이터 베이스 모델 은 각자 의 이론 적 출발점 이 다르다.대상 모델 의 이론 체 계 는 이 두 가지 로 간단하게 요약 할 수 있다.1)대상 으로 세 계 를 볼 수 있다.2)대상 간 의 관계(계승,관련,집합,조합)는 전체 구성 을 유지한다.한편,관계 데이터 베이스 모델 의 유일한 출발점 은 데 이 터 를 효과적으로 저장 하 는 것 이다.KEY 는 데이터 베이스 의 관건 적 인 기술 이다.관 계 는 여기 서 각 데이터 시트 의 KEY 간 의 관계 일 뿐 이런 관 계 를 데이터 의 관련 이 라 고 해 야 한다 고 생각한다.그 표현의 의 미 는 대상 간 의 관계 만큼 깊 지 않다.그렇다면 제 가 지금 가장 관심 있 는 문 제 는 히 베 네 이 트 가 관계 데이터 베 이 스 를 어떻게 활용 하 느 냐 하 는 것 입 니 다.KEY 관련 으로 대상 간 의 관 계 를 표현 하 느 냐 하 는 것 입 니 다.Hbernate 를 본 격 적 으로 연구 하기 전에 우 리 는 문제 의 간단 함 과 복잡 한 것 같은 모순 을 생각해 볼 수 있다.우리 가 디자인 한 대표 데이터 층 의 모든 종 류 는 데이터 시트 에 완벽 하 게 나타 나 야 한다.이렇게 요약 할 수 있 습 니 다:class-à table class 1―(관계)-class 2-->table 1--(관계)-table 2 문제 의 해결 은 매우 간단 한 것 같 습 니 다.특히 javabean 구조 에 대해 더욱 간단 합 니 다(간단 해 보일 뿐 입 니 다!!).간단 한 javabean 클래스 를 상상 하 십시오:Public class SimpleBean{proctected int id;  protected String name;   public int getId(){   return id;   }   public void setId(int id){   this.id=id;   }   public String getName(){   return name;   }   public void setName(String name){   this,name=name; }}우 리 는 name 맵 을 충분히 할 수 있 습 니 다:className-à table Name property Name à columnName 같은 인 스 턴 스 는 table 의 한 줄 입 니 다.이 문 제 는 아주 간단하게 해결 되 었 다.더 나 아가 다음 과 같은 간단 한 쌍 의 관 계 를 고려 합 니 다.Public class 1{Public Class 2 class 2;  public Class2 getclass2()…   public void setClass2(Class2 class2)…   }   public class Class2{   public Class1 class1; public Class 1 getClass 1()...}이러한 관 계 는 분명히 양 방향 입 니 다.class 1 에서 class 2 를 얻 을 수 있 고 반대로 class 2 에서 class 1 을 얻 을 수 있 습 니 다.그러면 데이터 시트 에 나타 날 수 있 습 니까?먼저 class 1 à table 1,class 2 à table 2 를 확인 할 수 있 습 니 다.테이블 1 과 테이블 2 는 서로의 키 를 저장 하기 위해 서로 열 을 더 늘 려 야 한 다 는 것 이 분명 하 다.이런 간단 한 관 계 는 데이터베이스 테이블 의 관련 에서 좋 은 지 지 를 받 았 지만 좀 복잡 한 것 은?다음 과 같은 종류:Public class S{Array List datas;Public List getDatas()..Public void setDatas(List datas).....}여기 서 위 에서 분석 한 property name-à ColumnName 을 간단하게 사용 하면 안 됩 니 다.이러한 집합 은 bean 속성 으로서 우 리 는 어떻게 데이터 시트 에 잘 나타 나 야 합 니까?만약 이 집합 들 이 단순 한 String 집합 일 뿐 이 라면,데이터베이스 테이블 에서 어떻게 설명 합 니까?만약 이 집합 들 이 특정한 인 스 턴 스 를 저장 하 는 것 이 라면 데이터베이스 시트 의 한 쌍 이상 의 관계 로 바 꿀 수 있 을 것 같 습 니까?다른 한편,계승 체 계 는 어떻게 데이터 블록 표 에 나타 납 니까?계승 관 계 는 어떻게 데이터베이스 의 관련 관계 로 표현 합 니까?계승 과 관련 된 동적 식별 은 어떻게 데이터베이스 에 나타 납 니까?다시 한 번 깊이 생각해 보 세 요.한 동작 에 대해:Public class Bookstore{Set books;  Public Set getBoos()..   Public void setBooks(Set boos)…   Public void addBook(Book book)…   public class Book{   public BookStore bookStore; public Parent getBookstore()...}비 즈 니스 논리 에서 우 리 는 코드 를 이렇게 씁 니 다:Book book=new Book();  .bookStore.addBooks(book); 위의 두 줄 코드 는 child 와 parent 간 의 관 계 를 명확 하 게 구축 했다.상대 적 으로 데이터 베이스 중의 데이터 도 이 몇 줄 코드 에 따라 데 이 터 를 만 들 고 이런 관 계 를 구축 해 야 한다.이때 메모리 의 데 이 터 는 어떻게 데이터베이스 의 데이터 와 일치 합 니까?

좋은 웹페이지 즐겨찾기