Entity Annotations in JPA | انوتیشن های Entity در JPA
📖توضیحات درس
📄جزوه
مفاهیم کلیدی
-
POJO (Plain Old Java Object) یک کلاس ساده در جاوا که هیچ وابستگی به فریمورکهای خاص ندارد و صرفاً شامل فیلدهای
privateبه همراه متدهایgetterوsetterاست. -
Entity کلاسی که نمایانگر یک موجودیت یا جدول در پایگاه داده است. هر شیء ساخته شده از این کلاس، معادل یک ردیف (
row) در جدول مربوطه است. -
JPA (Java Persistence API) یک استاندارد و قرارداد در جاوا برای مدیریت دادههای رابطهای است که تعیین میکند کلاسهای جاوا چگونه به جداول دیتابیس نگاشت شوند.
-
Primary Key شناسه منحصربهفرد برای هر ردیف در جدول دیتابیس که در JPA برای هر
Entityاجباری است. -
Persistence Unit یک پیکربندی در فایل
persistence.xmlکه تنظیمات مربوط به اتصال دیتابیس و مدیریتEntityها را تحت یک نام مشخص گروهبندی میکند.
موارد مصاحبه ای
-
پیشنیازهای اصلی برای تبدیل یک کلاس به Entity در JPA چیست؟ کلاس باید حتماً دارای انوتیشن
@Entityباشد، یک سازنده بدون آرگومان (no-args constructor) داشته باشد و حتماً یک کلید اصلی با انوتیشن@Idبرای آن تعریف شده باشد. -
تفاوت JPA و Hibernate در چیست؟ جیپیاِی (JPA) صرفاً یک مشخصات و مجموعه قوانین (Specification) است، در حالی که Hibernate یکی از پیادهسازیهای (Implementation/Provider) معروف این استاندارد است که عملیات واقعی را انجام میدهد.
-
کاربرد انوتیشن
@Transientچیست؟ این انوتیشن زمانی استفاده میشود که بخواهیم یک فیلد در کلاس وجود داشته باشد اما در دیتابیس ذخیره نشود (مثلاً فیلدی که مقدارش از محاسبات سایر فیلدها به دست میآید). -
تفاوت بین
EnumType.ORDINALوEnumType.STRINGدر انوتیشن@Enumeratedچیست؟ در حالتORDINALعدد (اندیس) مقدار اینام در دیتابیس ذخیره میشود که با تغییر ترتیب اینامها دچار مشکل میشود، اما در حالتSTRINGنام متنی آن ذخیره میگردد که خوانایی و پایداری بیشتری دارد. -
ویژگی
hibernate.hbm2ddl.autoبا مقدارupdateچه کاری انجام میدهد؟ این ویژگی باعث میشود Hibernate هنگام اجرا، ساختار دیتابیس را با کلاسهایEntityمقایسه کند و در صورت نیاز، جداول یا ستونهای جدید را به صورت خودکار اضافه کند بدون اینکه دادههای قبلی پاک شوند.
سناریو کاربردی
در این آموزش، فرآیند نگاشت یک کلاس Student به پایگاه داده پیادهسازی شده است. مراحل گامبهگام به شرح زیر است:
۱. تعریف مدل: ابتدا یک کلاس جاوا با فیلدهایی مثل id ،name و birthDate ایجاد میشود.
۲. هویتبخشی به موجودیت: با استفاده از @Entity کلاس به عنوان یک جدول و با @Id فیلد شناسه به عنوان کلید اصلی معرفی میگردد.
۳. پیکربندی اتصال: در فایل persistence.xml نام واحد پایداری (persistence-unit) و اطلاعات دیتابیس (مثل URL و پسورد) ست میشود.
۴. مدیریت خودکار جدول: با تنظیم hbm2ddl.auto روی update یا create به Hibernate اجازه داده میشود که به محض اجرای برنامه، جدول متناظر را در دیتابیس بسازد.
۵. سفارشیسازی نگاشت: با استفاده از انوتیشنهایی مثل @Table برای تغییر نام جدول و @Column برای تنظیم طول یا منحصربهفرد بودن ستونها، کنترل دقیقتری روی دیتابیس اعمال میشود.
بیشتر بدانید
-
IDE Tip در نسخه
IntelliJ Ultimateتب مخصوصی به نام Database وجود دارد که امکان مدیریت کامل دیتابیس و مشاهده جداول را بدون خروج از محیط کدنویسی فراهم میکند. -
نکته دیباگ برای مشاهده دستورات SQL که Hibernate به سمت دیتابیس میفرستد، میتوانید پراپرتی
hibernate.show_sqlرا در تنظیمات برابر باtrueقرار دهید. -
Dependency Tip اگر از کتابخانه
hibernate-coreاستفاده کنید، نیازی به اضافه کردن مجزایjakarta.persistence-apiنیست، زیرا خود هایبرنیت آن را به عنوان وابستگی داخلی شامل میشود. -
تنظیمات زمانی با استفاده از انوتیشن
@Temporal(TemporalType.DATE)میتوانید مشخص کنید که فیلد تاریخ فقط شامل تاریخ باشد، یا باTIMESTAMPزمان دقیق را هم ذخیره کند.
