JavaRush /وبلاگ جاوا /Random-FA /سوالات مصاحبه Hibernate
Dr-JohnZoidberg
مرحله
Киев

سوالات مصاحبه Hibernate

در گروه منتشر شد
این مقاله ترجمه و بهبود مقالات خارجی است (لیست منابع در انتهای مقاله آمده است). پاسخ به برخی از سؤالات گسترش یافته است، پیوندهایی به منابع شخص ثالث ارائه شده است که حاوی پاسخ هایی است که ممکن است در طول فرآیند خواندن ایجاد شود. 1) Hibernate چیست؟ این یک چارچوب برای نگاشت شی-رابطه ای موجودیت ها در پایگاه داده های سنتی رابطه ای است. ویژگی های اصلی چارچوب: 1) تولید و به روز رسانی خودکار جداول در پایگاه های داده. 2) از آنجایی که پرس و جوهای اصلی پایگاه داده (ذخیره، به روز رسانی، حذف و جستجو) به عنوان روش های چارچوب ارائه می شوند، کدهایی که توسعه دهنده می نویسد به میزان قابل توجهی کاهش می یابد. 3) استفاده از زبان SQL مانند (HQL - hibernate query language) را فراهم می کند. پرس و جوهای HQL را می توان در کنار اشیاء داده نوشت (کلاس های POJO که برای کار با پایگاه داده آماده شده اند). 2) نحوه Hibernateبه برنامه نویسی کمک می کند؟ Hibernate تعدادی ویژگی را پیاده سازی می کند که کار توسعه دهنده را بسیار ساده می کند. - یکی از این ویژگی‌ها این است که hibernate به توسعه‌دهنده اجازه می‌دهد تا از نوشتن اکثر کوئری‌های SQL اجتناب کند (آنها قبلاً پیاده‌سازی شده‌اند، فقط باید از روش‌هایی استفاده کنید که چارچوب ارائه می‌کند). — در زیر کاپوت، Hibernate دارای مجموعه ای از ابزارهای مفید است که به طور قابل توجهی سرعت برنامه را افزایش می دهد، که قابل توجه ترین آنها حافظه پنهان دو سطحی و تنظیم دقیق برداشت های تنبل و واکشی است. - جداول را در خود پایگاه داده تولید می کند. 3) روش های پیکربندی کار با Hibernate. چهار راه برای پیکربندی کار با Hibernate وجود دارد: - استفاده از حاشیه نویسی. - hibernate.cfg.xml؛ - hibernate.properties; - persistence.xml. رایج‌ترین روش پیکربندی: از طریق حاشیه‌نویسی و فایل persistence.xml، مانند فایل‌های hibernate.properties و hibernate.cfg.xml، سپس hibernate.cfg.xml مهم‌تر است (اگر برنامه دارای هر دو فایل باشد، تنظیمات از فایل hibernate.cfg پذیرفته می شود. xml). پیکربندی با حاشیه‌نویسی، اگرچه راحت است، اما همیشه امکان‌پذیر نیست؛ برای مثال، اگر می‌خواهید پیکربندی‌های موجودیت متفاوتی برای پایگاه‌های داده مختلف یا برای موقعیت‌های مختلف داشته باشید، باید از فایل‌های پیکربندی xml استفاده کنید. 4) Hibernate از چه رابط های کلیدی استفاده می کند؟ پنج رابط کلیدی وجود دارد که در هر برنامه مرتبط با Hibernate استفاده می شود: - رابط جلسه. - رابط SessionFactory. - رابط پیکربندی؛ - رابط تراکنش؛ - رابط های پرس و جو و معیارها. 5) نقش رابط Session در Hibernate چیست؟ Session رابط اصلی است که وظیفه ارتباط با پایگاه داده را بر عهده دارد. همچنین به ایجاد اشیاء درخواست برای به دست آوردن اشیاء پایدار کمک می کند. (شیء دائمی - یک شی که قبلاً در پایگاه داده است؛ شی درخواست - یک شی که با دریافت نتیجه یک پرس و جو در پایگاه داده به دست می آید، با این کار است که برنامه کاربردی کار می کند). شی Session را می توان از SessionFactory بدست آورد: Session session = sessionFactory.openSession(); نقش رابط Session: یک پوشش برای اتصال jdbc به پایگاه داده است. (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - یک کارخانه برای تراکنش ها است (طبق اسناد رسمی تراکنش - به برنامه اجازه می دهد تا واحدهای کار را تعریف کند، که در اصل به این معنی است که تراکنش تعریف می کند. مرزهای عملیات مرتبط با پایگاه داده). - نگهبان حافظه پنهان سطح اول اجباری است. 6) نقش رابط SessionFactory در Hibernate چیست؟ از شی SessionFactory است که آبجکت هایی از نوع Session بدست می آوریم. تنها یک SessionFactory برای کل برنامه وجود دارد و زمانی که برنامه شروع می شود مقداردهی اولیه می شود. SessionFactory متا داده ها و پرس و جوهای SQL را که اغلب توسط برنامه در طول عملیات استفاده می شود، ذخیره می کند. همچنین اطلاعاتی را که در یکی از تراکنش ها دریافت شده است ذخیره می کند و می تواند در تراکنش های دیگر استفاده شود. شی SessionFactory را می توان با استفاده از فراخوانی زیر بدست آورد: SessionFactory sessionFactory = configuration.buildSessionFactory(); 7) چه نوع مجموعه هایی در هایبرنیت ارائه می شود؟ کیف، مجموعه، فهرست، نقشه، آرایه. 8) مجموعه Bag type چیست و چرا استفاده می شود؟ در اجرای آن، نوع مجموعه Bag بسیار شبیه به Set است، تفاوت آن در این است که Bag می تواند مقادیر تکراری را ذخیره کند. کیف فهرستی از عناصر فهرست نشده را ذخیره می کند. اکثر جداول در پایگاه داده دارای شاخص هایی هستند که موقعیت یک عنصر داده را نسبت به یکدیگر نشان می دهند؛ این شاخص ها در جدول به عنوان یک ستون جداگانه نشان داده شده اند. با نگاشت شی-رابطه ای، مقادیر یک ستون شاخص به یک شاخص در یک آرایه، یک شاخص در یک لیست یا یک کلید در نقشه نگاشت می شود. اگر نیاز به مجموعه‌ای از اشیاء دارید که حاوی داده‌های شاخص نیستند، می‌توانید از مجموعه‌هایی از نوع Bag یا Set استفاده کنید (مجموعه‌ها حاوی داده‌ها به شکل مرتب‌نشده هستند، اما می‌توانند بر اساس درخواست مرتب شوند). 9) تفاوت در عملکرد متدهای load(); چیست؟ و get(); روش load()؛ معمولاً زمانی استفاده می شود که مطمئن نیستید که شی درخواست شده از قبل در پایگاه داده است. اگر شی پیدا نشد، متد یک استثنا پرتاب می‌کند. اگر شی پیدا شد، متد یک شیء پراکسی را برمی‌گرداند که پیوندی به شی واقع در پایگاه داده است (درخواست پایگاه داده هنوز انجام نشده است، نوعی بازیابی تنبل)، یک درخواست مستقیم به پایگاه داده زمانی که ما مستقیماً از طریق یک شی پراکسی به شی مورد نیاز دسترسی پیدا می کنیم. متد get() پس از استفاده، شما 100 درصد مطمئن نیستید که آیا شی درخواست شده در پایگاه داده است یا خیر. در مورد دسترسی به یک شی غیر موجود، متد get(); باطل خواهد شد. اگر شی پیدا شد، متد get(); خود شی را برمی گرداند و پرس و جو پایگاه داده بلافاصله ساخته می شود. 10) واکشی تنبل در Hibernate چیست؟ نوع پرداخت تنبل در Hibernate با موجودیت‌های برگ (فرزند) مرتبط است و در صورت وجود درخواست برای بررسی یک موجودیت والد، یک خط‌مشی پرداخت مشترک را تعریف می‌کند. یک مثال ساده: یک نهاد خانه وجود دارد. اطلاعات مربوط به تعداد، خیابان، تعداد آپارتمان‌ها و اطلاعات مربوط به خانواده‌هایی که در آپارتمان‌ها زندگی می‌کنند را ذخیره می‌کند؛ این خانواده‌ها یک نهاد فرزند نسبت به نهاد خانه تشکیل می‌دهند. هنگامی که ما اطلاعاتی در مورد یک خانه درخواست می کنیم، ممکن است دانستن اطلاعات در مورد خانواده هایی که در آن زندگی می کنند برای ما کاملا غیر ضروری باشد. در صورت درخواست، این امر باعث ابری شدن درخواست و افزایش سرعت برنامه می شود. ©dev-bay اکثر جداول در پایگاه داده دارای شاخص هایی هستند که موقعیت یک عنصر داده را نسبت به یکدیگر نشان می دهند؛ این شاخص ها در جدول به عنوان یک ستون جداگانه نشان داده شده اند. با نگاشت شی-رابطه ای، مقادیر یک ستون شاخص به یک شاخص در یک آرایه، یک شاخص در یک لیست یا یک کلید در نقشه نگاشت می شود. اگر نیاز به مجموعه‌ای از اشیاء دارید که حاوی داده‌های شاخص نیستند، می‌توانید از مجموعه‌هایی از نوع Bag یا Set استفاده کنید (مجموعه‌ها حاوی داده‌ها به شکل مرتب‌نشده هستند، اما می‌توانند بر اساس درخواست مرتب شوند). 9) تفاوت در عملکرد متدهای load(); چیست؟ و get(); متد load()؛ معمولاً زمانی استفاده می شود که مطمئن نیستید که شی درخواست شده از قبل در پایگاه داده است. اگر شی پیدا نشد، متد یک استثنا پرتاب می‌کند. اگر شی پیدا شد، متد یک شیء پراکسی را برمی‌گرداند که پیوندی به شی واقع در پایگاه داده است (درخواست پایگاه داده هنوز انجام نشده است، نوعی بازیابی تنبل)، یک درخواست مستقیم به پایگاه داده زمانی که ما مستقیماً از طریق یک شی پراکسی به شی مورد نیاز دسترسی پیدا می کنیم. متد get()؛ پس از استفاده، شما 100 درصد مطمئن نیستید که آیا شی درخواست شده در پایگاه داده است یا خیر. در مورد دسترسی به یک شی غیر موجود، متد get(); باطل خواهد شد. اگر شی پیدا شد، متد get(); خود شی را برمی گرداند و پرس و جو پایگاه داده بلافاصله ساخته می شود. 10) واکشی تنبل در Hibernate چیست؟ نوع پرداخت تنبل در Hibernate با موجودیت‌های برگ (فرزند) مرتبط است و در صورت وجود درخواست برای بررسی یک موجودیت والد، یک خط‌مشی پرداخت مشترک را تعریف می‌کند. یک مثال ساده: یک نهاد خانه وجود دارد. اطلاعات مربوط به تعداد، خیابان، تعداد آپارتمان‌ها و اطلاعات مربوط به خانواده‌هایی که در آپارتمان‌ها زندگی می‌کنند را ذخیره می‌کند؛ این خانواده‌ها یک نهاد فرزند نسبت به نهاد خانه تشکیل می‌دهند. هنگامی که ما اطلاعاتی در مورد یک خانه درخواست می کنیم، ممکن است دانستن اطلاعات در مورد خانواده هایی که در آن زندگی می کنند برای ما کاملا غیر ضروری باشد. در صورت درخواست، این امر باعث ابری شدن درخواست و افزایش سرعت برنامه می شود. ©dev-bay اکثر جداول در پایگاه داده دارای شاخص هایی هستند که موقعیت یک عنصر داده را نسبت به یکدیگر نشان می دهند؛ این شاخص ها در جدول به عنوان یک ستون جداگانه نشان داده شده اند. با نگاشت شی-رابطه ای، مقادیر یک ستون شاخص به یک شاخص در یک آرایه، یک شاخص در یک لیست یا یک کلید در نقشه نگاشت می شود. اگر نیاز به مجموعه‌ای از اشیاء دارید که حاوی داده‌های شاخص نیستند، می‌توانید از مجموعه‌هایی از نوع Bag یا Set استفاده کنید (مجموعه‌ها حاوی داده‌ها به شکل مرتب‌نشده هستند، اما می‌توانند بر اساس درخواست مرتب شوند). 9) تفاوت در عملکرد متدهای load(); چیست؟ و get(); روش load()؛ معمولاً زمانی استفاده می شود که مطمئن نیستید که شی درخواست شده از قبل در پایگاه داده است. اگر شی پیدا نشد، متد یک استثنا پرتاب می‌کند. اگر شی پیدا شد، متد یک شیء پراکسی را برمی‌گرداند که پیوندی به شی واقع در پایگاه داده است (درخواست پایگاه داده هنوز انجام نشده است، نوعی بازیابی تنبل)، یک درخواست مستقیم به پایگاه داده زمانی که ما مستقیماً از طریق یک شی پراکسی به شی مورد نیاز دسترسی پیدا می کنیم. متد get() پس از استفاده، شما 100 درصد مطمئن نیستید که آیا شی درخواست شده در پایگاه داده است یا خیر. در مورد دسترسی به یک شی غیر موجود، متد get(); باطل خواهد شد. اگر شی پیدا شد، متد get(); خود شی را برمی گرداند و پرس و جو پایگاه داده بلافاصله ساخته می شود. 10) واکشی تنبل در Hibernate چیست؟ نوع پرداخت تنبل در Hibernate با موجودیت‌های برگ (فرزند) مرتبط است و در صورت وجود درخواست برای بررسی یک موجودیت والد، یک خط‌مشی پرداخت مشترک را تعریف می‌کند. یک مثال ساده: یک نهاد خانه وجود دارد. اطلاعات مربوط به تعداد، خیابان، تعداد آپارتمان‌ها و اطلاعات مربوط به خانواده‌هایی که در آپارتمان‌ها زندگی می‌کنند را ذخیره می‌کند؛ این خانواده‌ها یک نهاد فرزند نسبت به نهاد خانه تشکیل می‌دهند. هنگامی که ما اطلاعاتی در مورد یک خانه درخواست می کنیم، ممکن است دانستن اطلاعات در مورد خانواده هایی که در آن زندگی می کنند برای ما کاملا غیر ضروری باشد. در صورت درخواست، این امر باعث ابری شدن درخواست و افزایش سرعت برنامه می شود. ©dev-bay هنگامی که ما مستقیماً از طریق یک شیء پراکسی به شی مورد نیاز دسترسی پیدا می کنیم، پرس و جو را به پایگاه داده مستقیم می کنیم. متد get()؛ پس از استفاده، شما 100 درصد مطمئن نیستید که آیا شی درخواست شده در پایگاه داده است یا خیر. در مورد دسترسی به یک شی غیر موجود، متد get(); باطل خواهد شد. اگر شی پیدا شد، متد get(); خود شی را برمی گرداند و پرس و جو پایگاه داده بلافاصله ساخته می شود. 10) واکشی تنبل در Hibernate چیست؟ نوع پرداخت تنبل در Hibernate با موجودیت‌های برگ (فرزند) مرتبط است و در صورت وجود درخواست برای بررسی یک موجودیت والد، یک خط‌مشی پرداخت مشترک را تعریف می‌کند. یک مثال ساده: یک نهاد خانه وجود دارد. اطلاعات مربوط به تعداد، خیابان، تعداد آپارتمان‌ها و اطلاعات مربوط به خانواده‌هایی که در آپارتمان‌ها زندگی می‌کنند را ذخیره می‌کند؛ این خانواده‌ها یک نهاد فرزند نسبت به نهاد خانه تشکیل می‌دهند. هنگامی که ما اطلاعاتی در مورد یک خانه درخواست می کنیم، ممکن است دانستن اطلاعات در مورد خانواده هایی که در آن زندگی می کنند برای ما کاملا غیر ضروری باشد. در صورت درخواست، این امر باعث ابری شدن درخواست و افزایش سرعت برنامه می شود. ©dev-bay هنگامی که ما مستقیماً از طریق یک شیء پراکسی به شی مورد نیاز دسترسی پیدا می کنیم، پرس و جو را به پایگاه داده مستقیم می کنیم. متد get() پس از استفاده، شما 100 درصد مطمئن نیستید که آیا شی درخواست شده در پایگاه داده است یا خیر. در مورد دسترسی به یک شی غیر موجود، متد get(); باطل خواهد شد. اگر شی پیدا شد، متد get(); خود شی را برمی گرداند و پرس و جو پایگاه داده بلافاصله ساخته می شود. 10) واکشی تنبل در Hibernate چیست؟ نوع پرداخت تنبل در Hibernate با موجودیت‌های برگ (فرزند) مرتبط است و در صورت وجود درخواست برای بررسی یک موجودیت والد، یک خط‌مشی پرداخت مشترک را تعریف می‌کند. یک مثال ساده: یک نهاد خانه وجود دارد. اطلاعات مربوط به تعداد، خیابان، تعداد آپارتمان‌ها و اطلاعات مربوط به خانواده‌هایی که در آپارتمان‌ها زندگی می‌کنند را ذخیره می‌کند؛ این خانواده‌ها یک نهاد فرزند نسبت به نهاد خانه تشکیل می‌دهند. هنگامی که ما اطلاعاتی در مورد یک خانه درخواست می کنیم، ممکن است دانستن اطلاعات در مورد خانواده هایی که در آن زندگی می کنند برای ما کاملا غیر ضروری باشد. در صورت درخواست، این امر باعث ابری شدن درخواست و افزایش سرعت برنامه می شود. ©dev-bay
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION