2010-05-27 4 views
3

JPA를 사용중인 프로젝트의 코딩 단계가 시작되었습니다. Netbeans의 도구를 사용하여 스키마를 기반으로 JPA 엔터티를 생성했습니다. 그것은 꽤 잘 작동했지만 언제나처럼 우리는 엔티티를 그때부터 좋은 것으로 사용자 정의해야했습니다.JPA 엔티티 유지 보수

테이블을 추가하고 다른 사람과의 관계를 바꿔서 스키마를 적절하게 변경했으며 엔티티를 업데이트하는 데 필요한만큼 변경했습니다. 우리는 우리가 가지고 있던 모든 사용자 정의를 다시 적용해야하기 때문에 다시 생성 할 수 없었습니다. 그래서 우리는 모든 것을 손으로했습니다. 큰 문제는 아니지만 단지 시간이 많이 걸렸습니다.

맞춤 설정은 우리가 추가 한 명명 된 쿼리, 계단식 유형, 우리 자신의 문자열 메서드, 같음 및 해시 코드 메서드였습니다. 나는 toString, equals 및 hascode 메소드에 추가 할 엔티티를 확장 한 클래스를 작성하는 방법에 대해 생각했습니다. 그렇게하면 재생성하면 손실되지 않습니다. 하지만 캐스케이드 형식과 명명 된 쿼리에 대해서는 확신하지 못했습니다.

더 좋은 방법이 있습니까, 아니면 그냥 희망적인 생각입니까?

답변

1

나는 이것이 단지 희망적인 생각이라고 생각합니다. 엔터티를 생성하고 확장하면 여러 가지 문제가 발생합니다. 생성 된 엔티티는 @MappedSuperclass로 주석되어야하고 테이블 이름을 가지지 않을 것입니다. 게다가 확장이 주석의 일부를 반복해야 할 수도 있습니다. 그리고 어쨌든 가끔씩 네임 쿼리 커스터마이징을 조정해야합니다. 단지 번거 로움.

일반적으로 데이터베이스 스키마에서 엔티티 생성은 손으로 영원히 유지해야하는 일회성 작업입니다.

엔티티에서 데이터베이스 스키마를 생성하는 것은 오랜 시간 동안 수행 할 수 있습니다. 그러나 그렇더라도 스키마 마이그레이션과 관련된 문제를 신중하게 관리해야합니다.

결론 일관성있는 엔티티와 데이터베이스 스키마를 동기화하는 것은 신중하고 수동 작업을 필요로합니다.

+0

답변 해 주셔서 감사합니다. 그것은 내가 생각했던 것입니다. 나는 내가 옳고 그름에 대해 생각하지 않고 잘못된 것을하고 있기를 바랄 뿐이며 더 나은 방법이 있어야한다고 생각한다. –

+0

잠재적으로 유용한 정보는 여기에서 찾을 수 있습니다. http://stackoverflow.com/questions/2052781/support-for-schema-migrations-with-jpa – HDave