2016-07-26 4 views
2

누구나 JPA의 @Transient 주석이 @Target 방법을 가지고있는 이유에 대해 예제를 사용하여 설명 할 수 있습니까?왜 JPA Transient 주석은 Target에 메소드가 있습니까?

나는 문서 http://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html

@Target (값 = {METHOD, FIELD}) 사전에

감사 말하는거다!

+0

getter 메서드 또는 필드를 사용하여 transient 특성에 액세스 할 수 있습니다. 이유는 무엇입니까? – Saravana

+0

메서드에서 허용하는 것이 어떨까요? 필드 만 허용해도 충분하지 않을까요? – user2906555

+0

아니요, 리플렉션 또는 게터 메소드를 사용하여 필드에 액세스하도록 프로그래밍 할 수 있습니다. – Saravana

답변

0

JPA 엔티티에서 필드 또는 메소드 (getter)에 주석을 달 수 있습니다. @Id 주석이이를 나타냅니다. 즉, 필드에 @Id을 입력하면 모든 주석은 필드로 이동해야합니다. 예를 들어, @Id Long getId()과 같이 다른 주석을 추가해야합니다. 그래서 @Transient도 메소드에있을 수 있습니다. 예를 들어

, 당신은 다음이

@Id 
private Long id; 

@Transient 
private String someTransientField; 

private Long getId() { 
    return this.id; 
} 

private String getSomeTransientField() { 
    return this.someTransientField; 
} 

이있는 경우 someTransientField은 일시적으로 처리 될 것이다. 그러나 @Id이 필드에 계속 남아 있고 @Transientprivate String getSomeTransientField()으로 이동하면 @Id이 필드에 있으므로 모든 다른 주석도 필드에 있어야하기 때문에 someTransientField은 영구적으로 처리됩니다.

그래서 @Transient이 방법에서 작동 할 경우이

private Long id; 

private String someTransientField; 

@Id 
private Long getId() { 
    return this.id; 
} 

@Transient 
private String getSomeTransientField() { 
    return this.someTransientField; 
} 
+0

@Transient가 필드가 아닌 메서드에서 사용하는 것이 더 적합한 예제를 도울 수 있습니까? – user2906555

+0

예제를 추가했습니다. 분명히 알기를 바랍니다. –

+0

그건 분명히 알 수 있습니다. 답변 해주셔서 감사합니다. – user2906555

0

@Target 주석 당신이 등이 주석을 사용할 수 있습니다, 예를 들어, 클래스, 필드, 메소드를 정의 할 수있는 프로그램 요소를 나타냅니다 주석 된 주석 유형의 인스턴스를 사용하여 주석을 추가 할 수 있습니다.

@Target(value={METHOD,FIELD})은 유형 (메소드 및 필드)의 상단에서만 주석을 사용할 수 있음을 의미합니다. 대상을 모두 함께 두어 클래스, 메소드 및 필드 모두에 주석을 사용할 수 있습니다.

JPA @Target - 주석을 적용 할 수있는 Java 요소의 종류를 제한하기 위해 다른 주석 인 @Transient을 표시합니다.

0

주석은 Field 또는 method에서 사용할 수 있음을 의미합니다.

필드에 주석이 달린 경우 필드는 리플렉션을 사용하여 액세스됩니다.

메서드 (getter)에 주석이있는 경우 getter 메서드를 사용하여 액세스합니다.