2011-09-19 3 views
3

저는 JPA 초보자이며 실제로이 API의 기초를 배우려고합니다. 내 질문은 다음과 같습니다. 필드에 주석을 적용하고 해당 주석을 getter에 적용하는 것의 차이점은 무엇입니까?JPA 주석, getters 또는 필드는 어디에 적용해야합니까?

+0

JPA의 JPA와 함께 JPA와 함께 사용했지만 JPG의 Hibernate Implementation을 포함하여 전통적으로 나는 습득 한 기반 코드를 다른 것보다 좋게 만들지는 모르겠다. – Shahzeb

+0

나는 더비 클라이언트에/서버 드라이버를 사용하기 위해 배울 수있는 더비 임베디드를 실제로 사용하고 있으므로 귀하의 대답이 더비에도 적용되는지 모르겠습니다. –

답변

2

다른 사람이 언급 한 것처럼 필드 액세스와 속성 액세스간에 차이가 있습니다. 필드는 지속성 공급자에 의한 직접 액세스를 나타내며 Property (메소드 액세스)는 사용자가 선택한 getter/setter를 사용하여 데이터에 액세스하는 것을 나타냅니다.

필자는 필자의 경험에 비추어 필드 액세스로 시작하는 것이 좋습니다. 이는 새로운 사용자가 시작하는 것이 더 쉽고 안전합니다. 속성 액세스는 매우 유용 할 수 있으며 일반적으로 일부 사람들이 선호 할 수 있습니다. 그러나 게터와 설정자가 가질 수있는 추가 동작으로 인해 조심하지 않으면 문제가 발생할 수도 있습니다. 따라서 일반적으로 속성 액세스를 사용해야하는 이유가없는 한 필드 액세스를 초보자로 사용하는 것이 가장 좋습니다.

JPA를 처음 사용하는 경우 Mike Keith와 Merrick Schincariol이 Pro JPA 2 사본을 가져 오는 것이 좋습니다. 이것과 다른 많은 관련 주제들을 다루고 있습니다.

+0

팁 주셔서 감사합니다. 나는 책을 발견하고 정확히 내가 뭘 찾고있는 것 같습니다! –

3

좋은 JPA 참조가 없습니다. 그러나 최대 절전 모드를 사용하는 경우 the Hibernate Annotations reference에이 선택 사항에 대한 몇 가지 참고 사항이 있습니다. 그것은 :

필드 나 메소드에 주석을 달 것인지 여부에 따라, Hibernate에서 사용하는 액세스 유형은 필드 또는 속성이됩니다. EJB3 스펙에서는 액세스 할 요소 유형에 대한 주석을 선언해야합니다 (예 : 속성 액세스를 사용하는 경우 getter 메소드, 필드 액세스를 사용하는 경우 필드). 필드와 메소드 모두에서 주석을 혼합하는 것은 피해야합니다. Hibernate는 @Id 또는 @EmbeddedId의 위치에서 접근 유형을 추측 할 것이다.

Hibernate는 리플렉션을 사용하여 값에 액세스하며,이 선택은 getters와 setters를 호출하는지 아니면 직접 필드 액세스를 사용하는지 결정합니다.

더 나은 것은 실제로 논쟁의 여지가 있으며 getter 및 setter에서 필드를 분명하게 얻고 설정하는 것 이상의 작업을하는지 여부에 따라 달라질 수 있습니다.

+0

나는 실제로 derby를 사용하여 독립 실행 형 응용 프로그램 (J2SE)에서 학습하고 향후 클라이언트/서버 드라이버를 사용할 계획이므로 derby에도이 대답이 적용됩니까? 그리고 나는 좋은 선택을하고 있습니까? 나는 어느 쪽이 더비 공연이나 동면을했는지 의미합니까? –

+0

내가 사용하고있는 jpa 구현이 eclipselink라는 사실을 잊어 버렸습니다.
더 많은 질문이 있는데, 자습서에서 "속성"이라는 용어를 여러 번 본 적이 있는데 그게 무엇을 의미하는지 정확히 이해하지 못했습니다. 단순히 getter를 의미합니까? –

관련 문제