@Entity ve @Table'daki ad özelliği


85

Bir şüphem var çünkü ad özelliği hem @Entity hem de @Table'da var

Örneğin, ad özelliği için aynı değere sahip olma iznim var

@Entity(name = "someThing")
@Table(name = "someThing")

ve aynı sınıf için farklı isimler de alabilirim

 @Entity(name = "someThing")
 @Table(name = "otherThing")

Biri bana bu ikisi arasındaki farkın ne olduğunu ve neden ikisinde de aynı özelliğe sahip olduğumuzu söyleyebilir mi?


@Entity artık kullanımdan kaldırıldı.
Philip Rego

8
@PhilipRego: Hibernate'in \ @Entity'si (yani org.hibernate.annotations.Entity) kullanımdan kaldırılırken, JPA'nın \ @Entity (yani javax.persistence.Entity) hayatta ve iyi durumda.
David Siegal

Yanıtlar:


106
@Entity(name = "someThing") => this name will be used to name the Entity
@Table(name = "someThing")  => this name will be used to name a table in DB

Bu nedenle, ilk durumda tablonuz ve varlığınız aynı ada sahip olacaktır, bu da tablonuza HQL veya JPQL yazarken varlıkla aynı adla erişmenize izin verecektir.

İkinci durumda, sorgu yazarken @ Entity'de verilen adı kullanmanız gerekir ve @Table'da verilen isim DB'deki tabloyu adlandırmak için kullanılacaktır.

Yani HQL da bir şey ifade edecektir otherThing DB.


19

@Entity(name = "someThing")=> bu ad etki alanını tanımlamak için kullanılacaktır .. bu ad yalnızca hqlsorgularla tanımlanacaktır ..ie .. etki alanı nesnesinin adı

@Table(name = "someThing") => bu ad, etki alanı nesnesi tarafından başvurulan tablo için kullanılacaktır..ie .. tablonun adı


16

@Entity bunun varlık veya tablo olduğunu belirtmek için model sınıflarında kullanışlıdır

@Table farklı bir ad vermek isterseniz, tablonuza herhangi bir özel ad vermek için kullanılır

Not: kullanmak istemiyorsanız @Tableo zaman hazırda düşünün @Entityvarsayılan ve ederek tablo adıdır @Entityzorunluluk

@Entity    
@Table(name = "emp")     
public class Employee implements java.io.Serializable    
{

}

2

@ Tablonun isim özniteliği gerçek tablo adıdır. @ Entitiy'nin adı, aynı ada sahip iki @Entity sınıfınız varsa ve sorguları çalıştırırken bunları ayırt etmenin bir yoluna ihtiyacınız varsa kullanışlıdır.


3
Ne zaman aynı adı taşıyan iki varlığınız olur? Sınıf adlarının eşit olduğu, ancak sınıfların farklı paketlerde olduğu (nitelikli adların farklı olduğu) zaman mı?
croraf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.