হাইবারনেট ওপেন সেশন ভিউতে কেন খারাপ অভ্যাস হিসাবে বিবেচিত হয়?


107

এবং LazyLoadExceptions এড়ানোর জন্য আপনি কোন জাতীয় বিকল্প কৌশল ব্যবহার করেন?

আমি বুঝতে পারি যে ওপেন সেশনে এই বিষয়গুলির সাথে সমস্যা রয়েছে:

  • বিভিন্ন jvm এর মধ্যে স্তরযুক্ত অ্যাপ্লিকেশনগুলি চলছে
  • লেনদেনগুলি কেবল শেষে প্রতিশ্রুতিবদ্ধ হয় এবং সম্ভবত আপনি ফলাফলগুলি আগে চাইবেন।

তবে, আপনি যদি জানেন যে আপনার অ্যাপ্লিকেশনটি কোনও একক ভিএম-তে চলছে, তাহলে কৌশলটি কেনার জন্য ওপেন সেশনটি ব্যবহার করে আপনার ব্যথা কমিয়ে দেবেন না?


12
ওএসআইভি একটি খারাপ অভ্যাস হিসাবে বিবেচনা করা হয়? কার দ্বারা?
জোহানেস ব্রডওয়াল

4
এবং - ভাল বিকল্প কি কি?
ডেভিড রবিনউইজ

7
পাঠ্য এই শান্তি যদি বীজ বিকাশকারীদের কাছ থেকে আসে: এই বাস্তবায়ন নিয়ে বেশ কয়েকটি সমস্যা রয়েছে, সবচেয়ে গুরুতর বিষয় যে আমরা কখনই নিশ্চিত হতে পারি না যে আমরা "উন্মুক্ত অধিবেশনটি দেখার" অব্যাহত লেনদেনের সময় অবধি এটি সম্পাদন না করা পর্যন্ত কোনও লেনদেন সফল হয়, দৃশ্যটি সম্পূর্ণরূপে রেন্ডার করা হয়েছে এবং রেন্ডার করা প্রতিক্রিয়া ইতিমধ্যে ক্লায়েন্টের কাছে ফ্লাশ করা হয়েছে। আমরা কীভাবে ব্যবহারকারীকে জানাতে পারি যে তাদের লেনদেন ব্যর্থ হয়েছিল?
ডারপেট

এবং এখানে লিঙ্কটি রয়েছে: redhat.com/docs/manouts/jboss/jboss-eap-4.2/doc/seam/…
দারপেট

2
পেশাদারদের পক্ষে এবং এটি সম্পর্কে আমার নিজের অভিজ্ঞতার জন্য এই ব্লগ পোস্টটি দেখুন - blog.jhades.org/open-session-in-view-pattern-pros-and-cons
বিশ্ববিদ্যালয়

উত্তর:


46

কারণ সম্ভবত অবিচ্ছিন্ন প্রক্সি পাঠানো, বিশেষত ভিউ লেয়ারে সংগ্রহগুলি এবং সেখান থেকে হাইবারনেট লোডটি ট্রিগার করা একটি পারফরম্যান্স এবং বোঝার দিক থেকে উভয়ই বিরক্তিকর হতে পারে।

বোঝা :

ওএসআইভি ব্যবহার করে ডেটা অ্যাক্সেস স্তর সম্পর্কিত উদ্বেগগুলির সাথে ভিউ স্তরটিকে 'দূষিত' করে।

HibernateExceptionঅলস লোডিংয়ের সময় ঘটতে পারে এমন কোনওটিকে পরিচালনা করার জন্য ভিউ স্তরটি প্রস্তুত নয় , তবে সম্ভবত ডেটা অ্যাক্সেস স্তরটি।

পারফরম্যান্স :

ওএসআইভি কার্পেটের নীচে যথাযথ সত্তা লোড করার চেষ্টা করে - আপনি লক্ষ্য করবেন না যে আপনার সংগ্রহ বা সত্ত্বাগুলি অলসভাবে শুরু করা হয়েছে (সম্ভবত এন + 1)। আরও সুবিধা, কম নিয়ন্ত্রণ।


আপডেট: এই বিষয় সম্পর্কে আরও বড় আলোচনার জন্য ওপেনসেশনআইনভিউ অ্যান্টিপ্যাটার্নটি দেখুন । লেখক তিনটি গুরুত্বপূর্ণ বিষয় উল্লেখ করেছেন:

  1. প্রতিটি অলস সূচনা আপনি একটি কোয়েরি পাবেন যার অর্থ প্রতিটি সত্তার জন্য N + 1 টি কোয়েরি প্রয়োজন হবে, যেখানে অলস সংঘের সংখ্যা N। যদি আপনার স্ক্রিনটি টেবুলার ডেটা উপস্থাপন করে তবে হাইবারনেটের লগটি পড়া একটি বড় ইঙ্গিত যা আপনি যা চান তা করেন না
  2. এটি পুরোপুরি স্তরযুক্ত আর্কিটেকচারকে পরাভূত করে, যেহেতু আপনি উপস্থাপনা স্তরে আপনার নখগুলি স্বেচ্ছায় ডিবি দিয়ে কাটাচ্ছেন। এটি একটি ধারণাগত কন, সুতরাং আমি এটির সাথে থাকতে পারতাম তবে একটি তাত্পর্য রয়েছে
  3. সর্বশেষে তবে কমপক্ষে, সেশনটি আনার সময় যদি কোনও ব্যতিক্রম ঘটে থাকে তবে পৃষ্ঠাটির লেখার সময় এটি ঘটবে: আপনি একটি পরিষ্কার ত্রুটি পৃষ্ঠা ব্যবহারকারীর সামনে উপস্থাপন করতে পারবেন না এবং কেবলমাত্র আপনি যা করতে পারেন তা শরীরে একটি ত্রুটি বার্তা লিখতে হবে

13
ঠিক আছে, হাইবারনেট ব্যতিক্রম সহ এটি ভিউ স্তরটিকে 'দূষিত' করে। তবে, কর্মক্ষমতা সম্পর্কে, আমি মনে করি যে কোনও পরিষেবা স্তর অ্যাক্সেস করার চেয়ে সমস্যাটি বেশ অনুরূপ যা আপনার ডিটিও ফিরিয়ে দেবে। যদি আপনি কোনও পারফরম্যান্স সমস্যার মুখোমুখি হন তবে আপনার একটি নির্দিষ্ট সমস্যাটিকে একটি স্মার্ট ক্যোয়ারী বা আরও বেশি লাইটওয়েট ডিটিও দিয়ে অনুকূলিত করা উচিত। ভিউতে আপনার প্রয়োজন হতে পারে এমন সম্ভাবনাগুলি পরিচালনা করতে যদি আপনাকে অনেকগুলি পরিষেবা পদ্ধতির বিকাশ করতে হয় তবে আপনি পরিষেবা স্তরটিকেও 'দূষিত' করছেন। না?
হেডিংস

1
একটি পার্থক্য হ'ল এটি হাইবারনেট অধিবেশন বন্ধ করতে বিলম্ব করে। আপনি জেএসপি রেন্ডার / লিখিত / ইত্যাদির জন্য অপেক্ষা করবেন এবং এটি বস্তুগুলিকে বেশি স্মৃতিতে রাখে। এটি একটি সমস্যা হতে পারে বিশেষত আপনার যদি সেশন কমিটের ডেটা লেখার প্রয়োজন হয়।
রবার্ট মুন্তানু

8
এটি বলার অর্থ নেই যে ওএসআইভি পারফরম্যান্সকে আঘাত করে। ডিটিও ব্যবহার করা ছাড়া কী বিকল্প রয়েছে? সেক্ষেত্রে আপনার সর্বদা কম পারফরম্যান্স থাকবে কারণ যে কোনও ভিউ দ্বারা ব্যবহৃত ডেটা এমনকি এমন দর্শনের জন্য লোড করতে হবে যা প্রয়োজন হয় না।
জোহানেস ব্রডওয়াল

11
আমি মনে করি দূষণ অন্যভাবে কাজ করে। যদি আমাকে ডেটা লোড করার আগ্রহী হয় তবে লজিক স্তরটি (বা আরও খারাপভাবে ডেটা অ্যাক্সেস স্তরটি) কোন জিনিসটি প্রদর্শিত হতে চলেছে তা জানতে হবে know ভিউ পরিবর্তন করুন এবং আপনার প্রয়োজনীয় জিনিসগুলি লোড করা বা আপনার প্রয়োজনীয় জিনিসগুলি হারিয়ে যাওয়া শেষ করুন। হাইবারনেট ব্যতিক্রম একটি বাগ এবং অন্য কোনও অপ্রত্যাশিত ব্যতিক্রমের মতো বিষাক্ত। পারফরম্যান্স একটি বিষয়। পারফরম্যান্স এবং স্কেলাবিলিটি ইস্যুগুলি আপনাকে আপনার ডেটা অ্যাক্সেস লেয়ারটিতে আরও চিন্তাভাবনা এবং কাজ করতে বাধ্য করবে এবং সম্ভবত অধিবেশনটি বন্ধ করতে বাধ্য করবে
জেনস স্কাউডার

1
@ জেনসচাউডার "দেখুন পরিবর্তন করুন এবং আপনার প্রয়োজনীয় জিনিসগুলি লোড করা বা আপনার প্রয়োজনীয় জিনিসগুলি হারিয়ে যাওয়া শেষ করবেন"। এটা ঠিক এটি। আপনি যদি ভিউটি পরিবর্তন করেন তবে আপনার প্রয়োজনীয় স্টাফগুলি লোড করা অনেক ভাল (যেহেতু আপনি এগুলি আনতে আগ্রহী হবেন) বা নিখোঁজ বস্তুগুলি খুঁজে বের করুন কারণ আপনি দৃশ্যটি লোড না করার চেয়ে অলস লোডিং ব্যতিক্রম পাবেন এটি অলসভাবে এর ফলে এন + 1 সমস্যা দেখা দেবে এবং আপনি এটি জানেন যে এটি ঘটছে। সুতরাং আইএমও এটির চেয়ে ভাল পরিষেবা স্তরটি (এবং আপনি) জানেন কী অলসভাবে ভিউ লোড হচ্ছে তার থেকে কী পাঠানো হয়েছিল এবং আপনি এটি সম্পর্কে কিছুই জানেন না।
যিশুরুন

40

দীর্ঘ বিবরণের জন্য, আপনি আমার ওপেন সেশনটি এন্টি-প্যাটার্ন নিবন্ধটি দেখুনতে পড়তে পারেন । অন্যথায়, কেন আপনার ভিউতে ওপেন সেশন ব্যবহার করা উচিত নয় তার একটি সংক্ষিপ্তসার এখানে।

ওপেন সেশন ভিউতে ডেটা আনার জন্য খারাপ দৃষ্টিভঙ্গি লাগে। ব্যবসায়ের স্তরটি ভিউ স্তরের দ্বারা প্রয়োজনীয় সমস্ত সংঘগুলি কীভাবে নেওয়া ভাল তা স্থির করার পরিবর্তে এটি দৃistence়তা প্রসঙ্গে খোলার জন্য বাধ্য করে যাতে ভিউ স্তরটি প্রক্সি সূচনাটি ট্রিগার করতে পারে।

এখানে চিত্র বর্ণনা লিখুন

  • OpenSessionInViewFilterকল openSessionঅন্তর্নিহিত পদ্ধতি SessionFactoryএবং একটি নতুন সংগ্রহ Session
  • Sessionআবদ্ধ হয় TransactionSynchronizationManager
  • OpenSessionInViewFilterকল doFilterএর javax.servlet.FilterChainঅবজেক্ট রেফারেন্স এবং অনুরোধ আরও প্রক্রিয়াকৃত হয়
  • DispatcherServletবলা হয়, এবং অন্তর্নিহিত তা যাত্রাপথ HTTP অনুরোধ PostController
  • PostControllerকল PostServiceএকটি তালিকা পেতে Postসত্ত্বা।
  • PostServiceএকটি নতুন লেনদেনের খুলে দেয়, আর HibernateTransactionManagerএকই reuses Sessionযে খোলা ছিল OpenSessionInViewFilter
  • PostDAOতালিকা নিয়ে আসে Postকোন অলস সমিতি আরম্ভের ছাড়া সত্ত্বা।
  • PostServiceঅন্তর্নিহিত লেনদেনের করে, কিন্তু Sessionবন্ধ হয়নি, কারণ এটি বাহ্যিকভাবে খোলা হয়।
  • DispatcherServletশুরু UI 'তে, যা, ঘুরে, অলস সমিতির নেভিগেট করে এবং তাদের আরম্ভের আরম্ভ করে রেন্ডারিং।
  • OpenSessionInViewFilterবন্ধ করে দিতে পারেন Session, এবং অন্তর্নিহিত ডাটাবেস সংযোগ পাশাপাশি উন্মুক্ত করা হয়েছে।

প্রথম নজরে, এটি করার মতো ভয়ঙ্কর জিনিসটির মতো নাও লাগতে পারে, তবে আপনি এটি একবার ডেটাবেস দৃষ্টিকোণ থেকে দেখলে সিরিজ ত্রুটিগুলি আরও স্পষ্ট হয়ে উঠতে শুরু করে।

পরিষেবা স্তরটি একটি ডাটাবেস লেনদেনটি খোলে এবং বন্ধ করে, তবে এর পরে, কোনও স্পষ্ট লেনদেন চলছে না। এই কারণে, ইউআই রেন্ডারিং পর্ব থেকে প্রকাশিত প্রতিটি অতিরিক্ত বিবৃতি অটো-কমিট মোডে কার্যকর করা হয়। অটো-কমিট ডাটাবেস সার্ভারে চাপ দেয় কারণ প্রতিটি বিবৃতি অবশ্যই লেনদেন লগকে ডিস্কে ফ্লাশ করে, সুতরাং ডাটাবেস সাইডে প্রচুর I / O ট্র্যাফিক সৃষ্টি করে। একটি অপ্টিমাইজেশন হ'ল Connectionকেবল পঠনযোগ্য হিসাবে চিহ্নিত করা যা ডাটাবেস সার্ভারকে লেনদেনের লগতে লেখা এড়াতে দেয়।

আর উদ্বেগের কোনও বিচ্ছেদ নেই কারণ পরিষেবা লেয়ার এবং ইউআই রেন্ডারিং প্রক্রিয়া উভয় দিয়ে বিবৃতি উত্পন্ন হয়। ইন্টিগ্রেশন টেস্টগুলি লেখার জন্য যা জেনারেট হওয়া স্টেটমেন্টের সংখ্যাটি দৃ .় করে তোলে ওয়েব কন্টেইনারটিতে অ্যাপ্লিকেশন স্থাপনের সময় সমস্ত স্তর (ওয়েব, পরিষেবা, ডিএও) দিয়ে যাওয়া প্রয়োজন। এমনকি ইন-মেমোরি ডাটাবেস (যেমন এইচএসকিউএলডিবি) এবং লাইটওয়েট ওয়েব সার্ভার ব্যবহার করার সময় (যেমন জেটি), স্তরগুলি পৃথক করা হয়েছিল এবং ব্যাক-এন্ড ইন্টিগ্রেশন পরীক্ষাগুলি ডাটাবেস ব্যবহার করেছিল তার চেয়ে এই ইন্টিগ্রেশন পরীক্ষাগুলি কার্যকর করতে ধীর হতে চলেছে the ফ্রন্ট-এন্ড ইন্টিগ্রেশন পরীক্ষাগুলি পুরোপুরি পরিষেবা স্তরকে উপহাস করছিল।

ইউআই স্তরটি নেভিগেট সংঘের মধ্যে সীমাবদ্ধ যা ঘুরেফিরে N + 1 ক্যোয়ারী সমস্যাগুলি ট্রিগার করতে পারে। যদিও হাইবারনেট @BatchSizeব্যাচে অ্যাসোসিয়েশন আনার জন্য প্রস্তাব দেয় এবং FetchMode.SUBSELECTএই পরিস্থিতিটি মোকাবেলা করার জন্য, টীকাগুলি ডিফল্ট আনয়ন পরিকল্পনাটিকে প্রভাবিত করে, তাই তারা প্রতিটি ব্যবসায়িক ব্যবহারের ক্ষেত্রে প্রয়োগ হয়। এই কারণে, একটি ডেটা অ্যাক্সেস লেয়ার ক্যোয়ারী অনেক বেশি উপযুক্ত কারণ এটি বর্তমান ব্যবহারের ক্ষেত্রে ডেটা আনার প্রয়োজনীয়তার জন্য উপযুক্ত হতে পারে।

সর্বশেষে তবে সর্বনিম্ন নয়, ইউআই রেন্ডারিং পর্যায়ে (আপনার সংযোগ রিলিজ মোডের উপর নির্ভর করে) ডাটাবেস সংযোগটি অনুষ্ঠিত হতে পারে যা সংযোগ ইজারা সময়কে বৃদ্ধি করে এবং ডাটাবেস সংযোগ পুলের ভিড়ের কারণে সামগ্রিক লেনদেনের থ্রুটপুটকে সীমাবদ্ধ করে। সংযোগটি যত বেশি অনুষ্ঠিত হবে তত বেশি অন্যান্য সমবর্তী অনুরোধগুলি পুল থেকে সংযোগ পেতে অপেক্ষা করতে চলেছে।

সুতরাং, হয় আপনি সংযোগটি দীর্ঘ সময়ের জন্য আটকে রাখেন, হয় আপনি একক এইচটিটিপি অনুরোধের জন্য একাধিক সংযোগ অর্জন / প্রকাশ করেন, অতএব অন্তর্নিহিত সংযোগ পুলে চাপ দিন এবং স্কেলিবিলিটি সীমাবদ্ধ করুন।

স্প্রিং বুট

দুর্ভাগ্যক্রমে, ওপেন সেশন ভিউতে স্প্রিং বুটে ডিফল্টরূপে সক্ষম করা হয়েছে

সুতরাং, application.propertiesকনফিগারেশন ফাইলটিতে আপনার নিম্নলিখিত প্রবেশদ্বার রয়েছে তা নিশ্চিত করুন:

spring.jpa.open-in-view=false

এটি ওএসআইভি অক্ষম করবে, যাতে আপনি সঠিক উপায়ে পরিচালনাLazyInitializationException করতে পারেন ।


3
অটো-কমিটের সাথে দৃশ্যে ওপেন সেশন ব্যবহার করা সম্ভব তবে হাইবারনেট বিকাশকারীরা যেভাবে ইচ্ছা করেছিলেন তা নয়। সুতরাং ভিউতে ওপেন সেশনটির ত্রুটিগুলি থাকলেও, স্বতঃশক্তি একটি নয় কারণ আপনি কেবল এটিকে বন্ধ করতে পারেন এবং এখনও এটি ব্যবহার করতে পারেন।
stefan.m

আপনি কোনও লেনদেনের মধ্যে কী ঘটে যায় সে সম্পর্কে কথা বলছেন এবং এটি সত্য। তবে ওয়েব লেয়ার রেন্ডারিং পর্বটি হাইবারনেটের বাইরে ঘটে, তাই আপনি স্বতঃআপনার মোডটি পান। বোধ হয়?
ভ্লাদ মিহলসিয়া

আমি মনে করি এটি একটি বৈকল্পিক যা ভিউ-তে ওপেন সেশনটির অনুকূল নয়। ভিউ রেন্ডার না হওয়া পর্যন্ত সেশন এবং লেনদেনটি উন্মুক্ত থাকা উচিত, তারপরে অটোকোমিট মোডের প্রয়োজন নেই।
stefan.m

2
অধিবেশন খোলা থাকে। তবে লেনদেন হয় না। পুরো প্রক্রিয়াটির উপর লেনদেনের বিস্তারটি সর্বোত্তম নয় কারণ এটির দৈর্ঘ্য বৃদ্ধি পায় এবং প্রয়োজনীয়গুলির চেয়ে বেশি সময় ধরে লকগুলি রাখা হয়। ভিউটি যদি রানটাইমএক্সসেপশন ছুড়ে দেয় তবে কী হবে তা কল্পনা করুন। ইউআই রেন্ডারিং ব্যর্থ হওয়ায় কি লেনদেনের রোলব্যাক হবে?
ভ্লাদ মিহলসিয়া

খুব বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ! আমি কেবল শেষদিকে গাইডটি পরিবর্তন করতাম যেহেতু বসন্তের বুট ব্যবহারকারীরা সম্ভবত এমপিএ ব্যবহার করবেন না।
স্কিভ

24
  • পরিষেবার স্তরতে লেনদেনগুলি প্রতিশ্রুতিবদ্ধ হতে পারে - লেনদেনগুলি ওএসআইভির সাথে সম্পর্কিত নয়। এটিই Sessionখোলা থাকে, কোনও লেনদেন নয় - চলমান।

  • যদি আপনার অ্যাপ্লিকেশন স্তরগুলি একাধিক মেশিনে ছড়িয়ে পড়ে থাকে তবে আপনি ওএসআইভি ব্যবহার করতে পারবেন না - তারের উপর দিয়ে বস্তুটি প্রেরণের আগে আপনার যা যা প্রয়োজন তা শুরু করতে হবে।

  • ওএসআইভি হ'ল অলস লোডিংয়ের পারফরম্যান্স সুবিধাগুলি ব্যবহার করার উপায়টি একটি দুর্দান্ত এবং স্বচ্ছ (যেমন - আপনার কোডের কোনওটিই এটির ক্ষেত্রে সচেতন নয়) way


2
প্রথম বুলেট পয়েন্ট সম্পর্কিত, এটি জবস উইকির মূল ওএসআইভি-র জন্য কমপক্ষে সত্য নয় , এটি অনুরোধের চারপাশে লেনদেনের সীমাবদ্ধতাও পরিচালনা করে।
পাস্কেল থিভেন্ট

পছন্দ করেছেন
সংঘুন লী

13

আমি বলব না যে ওপেন সেশন ইন ভিউ একটি খারাপ অভ্যাস হিসাবে বিবেচিত; আপনি কি এই ধারণা দেয়?

হাইবারনেট সহ সেশনগুলি পরিচালনা করার জন্য ওপেন-সেশন-ইন-ভিউ হ'ল একটি সহজ পদ্ধতি। কারণ এটি সহজ, এটি কখনও কখনও সরল থাকে। আপনার লেনদেনগুলিতে যেমন আপনার অনুরোধে একাধিক লেনদেনের উপর সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয় তবে ওপেন-সেশন-ইন-ভিউ সর্বদা একটি ভাল পদ্ধতির নয়।

অন্যরা যেমন উল্লেখ করেছে, ওএসআইভি-তে কিছু বাণিজ্য-অফ রয়েছে - আপনি এন + 1 সমস্যার থেকে অনেক বেশি ঝুঁকির কারণ আপনি কী লেনদেন করছেন তা বুঝতে আপনার সম্ভাবনা কম less একই সময়ে, এর অর্থ হল আপনার দৃষ্টিভঙ্গিতে সামান্য পরিবর্তনগুলির সাথে খাপ খাইয়ে নিতে আপনার পরিষেবা স্তর পরিবর্তন করার দরকার নেই।


5

আপনি যদি স্প্রিংয়ের মতো কোনও ইনভার্শন অফ কন্ট্রোল (আইওসি) ধারক ব্যবহার করেন তবে আপনি শিমের স্কোপিং পড়তে চাইতে পারেন । মূলত, আমি বসন্তকে আমাকে একটি হাইবারনেট Sessionঅবজেক্ট দিতে বলছি যার জীবনচক্র পুরো অনুরোধটি ছড়িয়ে পড়ে (যেমন এটি HTTP অনুরোধের শুরু এবং শেষের দিকে তৈরি এবং ধ্বংস হয়ে যায়)। LazyLoadExceptionআইওসি কন্টেইনারটি আমার পক্ষে পরিচালনা করে থাকায় আমাকে আর সেশন বন্ধ করার বিষয়ে চিন্তা করতে হবে না ।

উল্লিখিত হিসাবে, আপনি এন + 1 নির্বাচন কর্মক্ষমতা সমস্যা সম্পর্কে চিন্তা করতে হবে। পারফরম্যান্সের বিষয় হ'ল স্থানে আগ্রহী হয়ে লোড করার জন্য আপনি আপনার হাইবারনেট সত্তাটি পরে সর্বদা কনফিগার করতে পারেন।

শিমের স্কোপিং সলিউশন কোনও স্প্রিং-নির্দিষ্ট নয়। আমি জানি পিকো কনটেনার একই ক্ষমতা সরবরাহ করে এবং আমি নিশ্চিত যে অন্যান্য পরিপক্ক আইওসি পাত্রে অনুরূপ কিছু প্রস্তাব দেওয়া হয়েছে।


1
আপনার কাছে হাইবারনেট সেশনগুলির বাস্তবায়নের কোনও পয়েন্টার রয়েছে কীভাবে অনুরোধ বিছানো শিমের মাধ্যমে ভিউতে উপলব্ধ করা হচ্ছে?
মারভো

4

আমার নিজের অভিজ্ঞতায়, ওএসআইভি এতটা খারাপ নয়। আমার করা একমাত্র ব্যবস্থা হ'ল দুটি পৃথক লেনদেন ব্যবহার করা হচ্ছে: - প্রথমটি "পরিষেবা স্তর" এ খোলা হয়েছে, যেখানে আমার কাছে "ব্যবসায়িক যুক্তি" রয়েছে - দ্বিতীয়টি ভিউ রেন্ডারিংয়ের ঠিক আগে খোলা হয়েছে


3

আমি আমার ব্লগে দেখার জন্য উন্মুক্ত অধিবেশন কখন ব্যবহার করতে পারি সে সম্পর্কে কয়েকটি নির্দেশিকায় একটি পোস্ট করেছি। আপনার আগ্রহী কিনা তা পরীক্ষা করে দেখুন।

http://heapdump.wordpress.com/2010/04/04/should-i-use-open-session-in-view/


1
থাম্বের একটি সাধারণ এসও নিয়ম হিসাবে, যদি আপনি কোনও উত্তর সরবরাহ করে থাকেন তবে অন্য কোথাও লিঙ্ক দেওয়ার চেয়ে আরও কিছু করা ভাল best সম্ভবত একটি বা দুটি বাক্য বা তালিকাভুক্ত আইটেম সরবরাহ করুন ist এটি লিঙ্ক করা ঠিক আছে, তবে আপনি কিছুটা অতিরিক্ত মান সরবরাহ করতে চান। অন্যথায়, আপনি কেবল মন্তব্য করতে এবং লিঙ্কটি সেখানে রাখতে চান।
ডিওরাইট

এই উত্তরের লিঙ্কটি পড়ার মতো, এটি কখন ওএসআইভি ব্যবহার করতে হবে এবং তা নয়
এএমএস

1

আমি হাইবারনেটে ভি। মরিচা .. তবে আমি মনে করি একটি হাইবারনেট অধিবেশনে একাধিক লেনদেন সম্ভব। সুতরাং আপনার লেনদেনের সীমানা সেশন শুরু / থামার ইভেন্টগুলির মতো হবে না।

ওএসআইভি, ইমো প্রাথমিকভাবে দরকারী কারণ আমরা যতবার অনুরোধ ডিবি অ্যাক্সেস করার প্রয়োজন হয় ততবার 'দৃ pers় প্রসঙ্গ' (ওরফে সেশন) শুরু করার জন্য কোড লিখন এড়াতে পারি।

আপনার পরিষেবা স্তরে আপনাকে সম্ভবত এমন পদ্ধতিতে কল করতে হবে যার বিভিন্ন লেনদেনের প্রয়োজন রয়েছে, যেমন 'প্রয়োজনীয়, নতুন প্রয়োজনীয়, ইত্যাদি' ' এই পদ্ধতিগুলির কেবলমাত্র একটি বিষয় হ'ল যে কেউ (অর্থাত্ ওএসআইভি ফিল্টার) অধ্যবসায় প্রসঙ্গটি শুরু করেছে, যাতে তাদের কেবল উদ্বিগ্ন হওয়া দরকার - "আরে এই থ্রেডের জন্য হাইবারনেট সেশনটি দিন ... আমার কিছু করা দরকার ডিবি স্টাফ "।


1

এটি খুব বেশি সহায়তা করবে না তবে আপনি আমার বিষয়টি এখানে পরীক্ষা করতে পারবেন: * ওপেনসেশনআইভিউ সহ হাইবারনেট ক্যাশে 1 আউট অফ মেমরি

আমার ওপেনসেশনআইভিউ এবং প্রচুর সত্তা লোড হওয়ার কারণে আমার কিছু আউটআফমিরি সমস্যা রয়েছে, কারণ তারা হাইবারনেট ক্যাশে লেভেল 1 এ থাকে এবং আবর্জনা সংগ্রহ করা হয় না (প্রতি পৃষ্ঠায় 500 আইটেম সহ আমি প্রচুর সত্তা লোড করি, তবে সমস্ত সত্তা ক্যাশে থাকে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.