2011-07-19 10 views
6

En iyi uygulama hangisidir?@Temporal @Column columnDefinition tercih edildi mi?

@Column(name = "FOO", columnDefinition = "TIMESTAMP") 
private Date foo; 

Ya

dokümantasyon columnDefinition kullanılarak olmayan taşınabilir olduğunu göstermektedir
@Column(name = "FOO") 
@Temporal(TemporalType.TIMESTAMP) 
private Date foo; 

...

cevap

8

dokümantasyon ...

columnDefinition kullanılarak olmayan taşınabilir olduğunu göstermektedir

Bu doğrudur. columnDefinition, kullanılacak SQL veri tipini belirledi. Ancak bu veri türü tüm RDBMS'de mevcut olmayabilir. JPA'da, SQL'in hangi DB üzerinde çalıştığı konusunda karar vermek JPA sağlayıcısının görevidir. , bu yapılandırmanın bir kısmını belirtebilir, ancak bazı veritabanları için her zaman desteği kesmeniz riskiyle karşı karşıyasınız. Öte yandan, JPA standardının bir parçası olan bir soyutlamadır. Her JPA sağlayıcısı, desteklenen tüm veritabanları için farklı SQL türleri için @Temporal farklı türlerini eşleyebilmelidir.

İlgili konular