2017-02-15 10 views
0

저는 JPA 초보자입니다. 나와 함께있어주세요. 사용할 옵션을 결정할 수 없으므로 도움이 필요합니다. .JPA 필드 액세스, create.query, update.query 또는 속성 액세스, 찾기 및 설정자를 사용해야합니까?

옵션 1 : 나는 엔티티 필드 위의 주석을 배치하고 (데이터베이스에 저장 한 후 등) 생성자를 통해서만 생성시 개체에 대한 쓰기 액세스 할 수 있습니다. JPA 관리자는 필드 액세스 이후에도 업데이트 쿼리를 수행 할 수 있음을 알고 있습니다 (hier). 이 방법을 사용하면 항목을 업데이트하거나 변경하려는 경우 새 쿼리를 만들어야합니다. 하지만이 쿼리는 직접 작성해야합니다 (명시된대로 hier).

옵션 2 : 나는 게터/세터 위의 주석을 배치하고 함께 세터 (같은이 hier)와 엔티티 관리자의 방법을 찾아 사용 후 속성 액세스 를 사용합니다. 이것은 나를위한 쿼리를 만들지 만 이제는 데이터베이스에 추가하기 전에 설정자가 개체를 만든 후에 변경할 수 있습니다.

내 의견 는 또한 hier 동안 상단 대답은 세터

엔티티를 업데이트하는 올바른 방법을 사용하는 것이 좋습니다 당신은 당신이 세터를 통해 업데이트 원하는 속성을 설정하고 할 수 있다는 것입니다 JPA는이있는 (플러싱 대신 수동으로

Hier 두 번째 답을 작성하는 동안 에게 당신을위한 업데이트 SQL을 생성하는 대부분의 upvotes) 필드 액세스가 방법입니다 상태.

저는 혼란 스럽지만 아마 두 번째 옵션을 생성자와 함께 사용하고 Entity manager에만 setter를 사용하고 setters 패키지를 private로 만듭니다. 자바 EE6와 지속성 공급자와 JPA 2.0 로 2.5 +는 EclipseLink를 사용

정보

  • 임 내가 SAP를 하나 클라우드 플랫폼으로 작동하는지 언급해야
  • 및 이있다 tutorial 사용 첫 번째 옵션은 설정자와 함께 의 생성자입니다.

질문 : 가 나는 JPA 초보자으로 만 항목 1~30일 후 삭제됩니다 로깅을 위해 데이터베이스에 대한 옵션 1 또는 2를 사용합니다. ?

+1

참조 http://stackoverflow.com/questions/4188048/why-should-anybody-put-annotations-on-the-getters-or-setters -when-using-jpa-to-m – perissf

+0

이전에 읽었으며 두 번째 옵션을 지원합니다. 이제 특정 액세스 부분을 볼 수 있지만 그 시나리오는 어떻게 바뀔까요? – MADforFUNandHappy

답변

1

IMHO 두 번째 방법을 사용해야합니다. ORM과 JPA의 핵심은 데이터베이스를 다루지 않고 쿼리를 작성하지 않아도된다는 것입니다. 첫 번째 접근 방식의 성능상의 이점은 동기화, 가독성 및 코드 유지 관리에서 직면하게 될 문제가 아닙니다.

그런데이 해킹을 보증하는 시나리오가있을 수 있습니다. 예를 들어, 쓰기 작업을 수행하고 읽지 않는 경우 로그 객체로 메모리가 넘치지 않도록해야합니다.이 점에 대해 확실하지 않은 경우 두 번째 방법을 더 사용하십시오.

+0

나는 이것에 동의한다. 누군가가 할 수없는 좋은 이유가 있는지 살펴 보자. – MADforFUNandHappy