Hibernate에서 @Temporal 어노테이션의 사용은 무엇입니까?
Hibernate 문서에는 @Temporal
주석에 대한 아래 정보가 있습니다 .
일반 Java API에서는 시간의 시간 정밀도가 정의되지 않습니다. 시간 데이터를 다룰 때 데이터베이스에서 예상되는 정밀도를 설명 할 수 있습니다. 시간 데이터는 DATE, TIME 또는 TIMESTAMP 정밀도 (즉, 실제 날짜, 시간 만 또는 둘 다)를 가질 수 있습니다. @Temporal 주석을 사용하여 미세 조정하십시오.
무슨 temporal precision of time is not defined
뜻이야? temporal
데이터와 그 정밀도 는 무엇입니까 ? 어떻게 미세 조정합니까?
이 주석은 영구 필드 또는 java.util.Date
및 유형의 속성에 지정되어야합니다 java.util.Calendar
. 이러한 유형의 필드 또는 속성에 대해서만 지정할 수 있습니다.
Temporal
주석은와 함께 사용될 수있는 Basic
주석의 Id
주석 또는 ElementCollection
주석 (요소 컬렉션 값은 시간적 형인 경우.
일반 Java API에서는 시간의 시간 정밀도가 정의되지 않습니다. 시간 데이터를 다룰 때 데이터베이스에서 예상되는 정밀도를 설명 할 수 있습니다. 시간 데이터는 DATE, TIME 또는 TIMESTAMP 정밀도 (즉, 실제 날짜, 시간 만 또는 둘 다)를 가질 수 있습니다. @Temporal
주석을 사용하여 미세 조정 하십시오 .
시간 데이터는 시간과 관련된 데이터입니다. 예를 들어, 콘텐츠 관리 시스템에서 기사의 작성 날짜와 마지막 업데이트 날짜는 시간 데이터입니다. 어떤 경우에는 임시 데이터에 정밀도가 필요하며 정확한 날짜 / 시간 또는 둘 다 ( TIMESTAMP
)를 데이터베이스 테이블 에 저장하려고 합니다.
시간 정밀도는 핵심 Java API에 지정되지 않습니다. 타임 스탬프와 사이를 앞뒤로 변환 @Temporal
하는 JPA
주석입니다 java.util.Date
. 또한 time-stamp
시간으로 변환 됩니다. 예를 들어 아래 스 니펫 @Temporal(TemporalType.DATE)
에서 시간 값을 삭제하고 날짜 만 유지합니다 .
@Temporal(TemporalType.DATE)
private java.util.Date creationDate;
javadocs에 따라
쿼리 메서드 매개 변수에 적절한 {@code TemporalType}을 선언하는 주석입니다. 이 주석은 기본값이있는 {@link Date} 유형의 매개 변수에만 사용할 수 있습니다.
TemporalType.DATE
[다양한 출처에서 수집 한 위 정보]
@Temporal
다음 열 항목의 데이터베이스 테이블에 저장하는 데 사용할 수있는 JPA 주석입니다.
- DATE (
java.sql.Date
) - 시간 (
java.sql.Time
) - 타임 스탬프 (
java.sql.Timestamp
)
일반적으로 Date
클래스에서 필드를 선언하고 저장하려고 할 때. 데이터베이스에 TIMESTAMP 로
저장됩니다 .
@Temporal
private Date joinedDate;
위 코드는 08-07-17 04 : 33 : 35.870000000 PM 과 같은 값을 저장합니다 .
DATE 만 데이터베이스에 저장
하려면 사용 / 정의 할 수 있습니다 TemporalType
.
@Temporal(TemporalType.DATE)
private Date joinedDate;
이번에 는 데이터베이스에 08-07-17 을 저장 합니다.
@Temporal
요구 사항에 따라 사용할 수있는 다른 속성도 있습니다 .
임시 유형은 지속적 상태 매핑에 사용할 수있는 시간 기반 유형의 집합입니다.
지원 시간적 유형의 목록이 포함하는 세 java.sql
종류 java.sql.Date
, java.sql.Time
및 java.sql.Timestamp
, 그것을 포함하는 두 java.util
유형 java.util.Date
과 java.util.Calendar
.
java.sql
유형은 완전히 번거 로움 - 무료입니다. 다른 단순 매핑 유형과 동일하게 작동하며 특별한 고려 사항이 필요하지 않습니다.
그러나 두 java.util
유형 java.sql
에는 JDBC 드라이버와 통신 할 때 사용할 JDBC 유형을 나타 내기 위해 추가 메타 데이터가 필요 합니다. 이것은 주석으로 주석을 달고 @Temporal
JDBC 유형을 TemporalType
열거 유형 의 값으로 지정하여 수행됩니다 .
각 java.sql
유형 을 나타내는 DATE, TIME 및 TIMESTAMP의 세 가지 열거 값이 있습니다.
이것을 사용하십시오
@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;
public Calendar getCreateDate() {
return createDate;
}
public void setCreateDate(Calendar createDate) {
this.createDate = createDate;
}
I use Hibernate 5.2 and @Temporal
is not required anymore.
java.util.date, sql.date, time.LocalDate are stored into DB with appropriate datatype as Date/timestamp.
If you're looking for short answer:
In the case of using java.util.Date, Java doesn't really know how to directly relate to SQL types. This is when @Temporal
comes into play. It's used to specify the desired SQL type.
Source: Baeldung
참고URL : https://stackoverflow.com/questions/25333711/what-is-the-use-of-the-temporal-annotation-in-hibernate
'your programing' 카테고리의 다른 글
-fPIC 컴파일러 옵션을 추가하는 CMAKE의 관용적 방법은 무엇입니까? (0) | 2020.10.05 |
---|---|
자바 동기화 블록 대 Collections.synchronizedMap (0) | 2020.10.05 |
Python의 모듈 식 곱셈 역함수 (0) | 2020.10.04 |
Android에서 왼쪽 또는 오른쪽으로 스 와이프를 감지하는 방법은 무엇입니까? (0) | 2020.10.04 |
igraph에서 커뮤니티 감지 알고리즘의 차이점은 무엇입니까? (0) | 2020.10.04 |