আপনি কোন জাভা ওআরএম পছন্দ করেন এবং কেন? [বন্ধ]


262

এটি একটি সুন্দর মুক্ত সমাপ্ত প্রশ্ন। আমি একটি নতুন প্রকল্প শুরু করব এবং ডাটাবেস অ্যাক্সেসের সাথে সংহত করার জন্য বিভিন্ন ওআরএম খুঁজছি at

যদি আপনার কোন পছন্দসই আছে? আপনি কি পরিষ্কার থাকার পরামর্শ দিবেন?


2
: এই গুরুত্বপূর্ণ সংশ্লিষ্ট প্রশ্ন দেখুন stackoverflow.com/questions/494816/using-an-orm-or-plain-sql/... stackoverflow.com/questions/716532/...
ripper234

মাইক্রো-ওড়মগুলি দেখুন - প্ল্যাটফর্মের ডিবি অ্যাক্সেস প্রযুক্তির চারপাশে পাতলা মোড়ক - জাভা github.com/aaberg/sql2o এর জন্য sql2o বা .NET গিথুব
টমাসকুব্যাকি

3
ওআরএম 5 বছরেরও বেশি সময় ব্যবহার করার পরে আমার ব্যক্তিগত পছন্দটি হল ওআরএম এর ওপরে স্প্রিং জেডিবিসি, এবং দ্বিতীয়টি সেরা হ'ল আইব্যাটিস (মাইবাটিস), বক্ররেখ শেখার কারণে, কম নিয়ন্ত্রণ এবং কার্য সম্পাদনের কারণে হাইবারনেট পছন্দ করি না।

এখানে (এছাড়াও বন্ধ) যে পূর্ণবিকশিত orms বিকল্প হিসেবে ব্যবহার করা যাবে লাইটওয়েট JDBC চাদরে তালিকা stackoverflow.com/questions/7137929/...
Vadzim

উত্তর:


237

আমি ওআরএম ব্যবহার বন্ধ করে দিয়েছি।

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

সুতরাং কেবল জেডিবিসি প্যাকেজটি ব্যবহার করে বিবেচনা করুন।


81
ওআরএম-এর সাথে এটি একই গল্প এবং বার বার: ওআরএম সম্পর্কিত বাগ এবং অদক্ষতাগুলি ট্র্যাক করার সময় প্রকল্পটিতে দুর্দান্ত দ্রুত প্রাথমিক বিকাশ এবং আপনার সংস্থানগুলিতে একটি বড় ড্রেন। আমি এ সত্যটিও ঘৃণা করি যে এটি বিকাশকারীদের ধারণা দেয় যে তাদের কখনই নির্দিষ্ট অনুকূল প্রশ্নগুলি লিখতে হবে না।
Eelco

7
আরে, বড় বাস্তব জীবনের প্রকল্পগুলির জন্য এটি কি সত্য?
সান্টিয়াগোবসুল্টো

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

58
কেন জিজ্ঞাসা / লেনদেনের জটিলতার উপর নির্ভর করে উভয় ব্যবহার করবেন না? তারা মত পারস্পরিক একচেটিয়া হয় না।
উভচর

6
@ উইলশেপার্ড হ্যাঁ উইল আমি জ্যাঙ্গো ওআরএমটি বেশ ব্যবহার করি এবং এটি দুর্দান্ত কাজ করে। আমি মনে করি পার্থক্যটি পাইথনের গতিশীল প্রকৃতিতে (এবং পার্ল) হতে পারে। জাভাতে একটি ওআরএম ব্যবহার করা একটি ব্যথা। তবে গতিশীল ভাষাগুলিতে এটি সত্যই ভাবের হতে পারে। পাইথনের ডিএসএল এর মতো ওআরএম অপারেশনগুলি এম্বেড করার জন্য কয়েকটি দুর্দান্ত প্রকল্প রয়েছে এবং দুর্দান্ত।
সান্তিয়াগোবসুল্টো

97

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


4
আমি এই বিবৃতির সাথে একমত। অধ্যবসায় কোড লিখে মোট বিকাশের সময় থেকে কতটা খরচ হবে? আমি 10-15% এর চেয়ে কম ভাবি
adrian.tarau

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

3
"ওআরএম ব্যবহারের ফলে যখন আপনার অস্বাভাবিকতা ডিবাগ করতে হয় তখন অর্জিত সময় সাশ্রয়টি সহজেই উড়ে যায়" প্রযুক্তিগত পছন্দগুলি গ্রহণের সময় দক্ষতা বক্ররেখা একটি শালীন ফ্যাক্টর হলে এটি সত্য নয়।
এলসাদেক

7
আপনার যুক্তিটি কোনও লাইব্রেরি ব্যবহারের বিরুদ্ধে দেওয়া যেতে পারে। ওআরএমের সবচেয়ে বড় লাভ হ'ল কাজের ইউনিট, অবজেক্ট ম্যাপিং, ট্র্যাকিং পরিবর্তন, অলস লোডিং, মাইগ্রেশন এবং সম্পর্কের মতো জিনিস things User.profile.givenName লিখতে সক্ষম হওয়া এবং এটির জন্য ডেটা সংরক্ষণের জন্য কী কাঠামো ব্যবহার করা হয়েছিল তা যত্নশীল না করার জন্য একটি দুর্দান্ত জিনিস।
অ্যালেক্স

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

92

অনেকগুলি ওআরএম দুর্দান্ত, আপনি জেডিবিসির শীর্ষে কেন বিমূর্তি যুক্ত করতে চান তা আপনার জানতে হবে। আমি আপনাকে http://www.jooq.org সুপারিশ করতে পারি (অস্বীকৃতি: আমি jOOQ এর স্রষ্টা, সুতরাং এই উত্তরটি পক্ষপাতদুষ্ট)। jOOQ নিম্নলিখিত দৃষ্টান্তটি আলিঙ্গন করে:

  • এসকিউএল একটি ভাল জিনিস। অনেকগুলি বিষয় এসকিউএল-তে বেশ সুন্দরভাবে প্রকাশ করা যায়। এসকিউএল সম্পূর্ণ বিমূর্তকরণের প্রয়োজন নেই।
  • সম্পর্কিত তথ্য মডেল একটি ভাল জিনিস। এটি গত 40 বছরের সেরা ডেটা মডেল প্রমাণ করেছে। এক্সএমএল ডাটাবেসগুলির বা সত্যিকারের অবজেক্ট ওরিয়েন্টেড ডেটা মডেলগুলির প্রয়োজন নেই। পরিবর্তে, আপনার সংস্থাটি ওরাকল, মাইএসকিউএল, এমএসএসকিউএল, ডিবি 2 বা অন্য কোনও আরডিবিএমএসের বেশ কয়েকটি উদাহরণ চালায়।
  • এসকিউএলের একটি কাঠামো এবং বাক্য গঠন রয়েছে। এটি জেডিবিসিতে "নিম্ন-স্তরের" স্ট্রিং কনট্যানটেশন - বা এইচকিউএলে "উচ্চ-স্তরের" স্ট্রিং কনটেনটেশন ব্যবহার করে প্রকাশ করা উচিত নয় - উভয়ই সিনট্যাক্স ত্রুটি ধারণ করার ঝুঁকিপূর্ণ।
  • বড় প্রশ্নগুলির সাথে ডিল করার সময় ভেরিয়েবল বাঁধাই খুব জটিল হতে থাকে। এটি এমন কিছু যা বিমূর্ত হওয়া উচিত।
  • জাভা কোড লেখার সময় পজোগুলি দুর্দান্ত database
  • POJO হ'ল ম্যানুয়ালি লিখতে এবং বজায় রাখতে ব্যথা pain কোড জেনারেশন যাওয়ার উপায়। আপনার কাছে ডেটাটাইপ-সুরক্ষা সহ সংকলন-নিরাপদ প্রশ্ন থাকবে।
  • ডাটাবেস প্রথম আসে। আপনার ডাটাবেসের শীর্ষে থাকা অ্যাপ্লিকেশনটি সময়ের সাথে সাথে পরিবর্তিত হতে পারে, সম্ভবত ডেটাবেসটি সম্ভবত দীর্ঘস্থায়ী হতে চলেছে।
  • হ্যাঁ, আপনি আপনার উত্তরাধিকারের ডাটাবেসে কার্যপ্রণালী এবং ব্যবহারকারী সংজ্ঞায়িত প্রকার (ইউডিটির) সঞ্চয় করেছেন। আপনার ডাটাবেস-সরঞ্জাম এটি সমর্থন করা উচিত।

আরও অনেক ভাল ওআরএম রয়েছে। বিশেষত হাইবারনেট বা আইবাটিস একটি দুর্দান্ত সম্প্রদায় রয়েছে। তবে আপনি যদি কোনও স্বজ্ঞাত, সাদামাটা সন্ধান করছেন, আমি বলব JOOQ ব্যবহার করে দেখুন। তুমি এটা পছন্দ করবে! :-)

এই উদাহরণটি এসকিউএল দেখুন:

  // Select authors with books that are sold out
  SELECT * 
    FROM T_AUTHOR a
   WHERE EXISTS (SELECT 1
                   FROM T_BOOK
                  WHERE T_BOOK.STATUS = 'SOLD OUT'
                    AND T_BOOK.AUTHOR_ID = a.ID);

এবং এটি কীভাবে JOOQ এ প্রকাশ করা যেতে পারে:

  // Alias the author table
  TAuthor a = T_AUTHOR.as("a");

  // Use the aliased table in the select statement
  create.selectFrom(a)
        .whereExists(create.selectOne()
                           .from(T_BOOK)
                           .where(T_BOOK.STATUS.equal(TBookStatus.SOLD_OUT)
                           .and(T_BOOK.AUTHOR_ID.equal(a.ID))))));

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

আমি "ডাটাবেসটি প্রথম আসে" না দেওয়ার চেষ্টা করি। কোনও অ্যাপ্লিকেশনটিতে ক্লায়েন্টের জন্য অনুরোধ করা বৈশিষ্ট্যগুলির ব্যবসায়ের নিয়ম রয়েছে এবং তারা কখনই ডেটাবেস তৈরি করতে বলে না। এটি বাস্তবায়নের সময় নির্ধারিত একটি প্রযুক্তিগত বিশদ।
কুয়েবল

58

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

এমনকি এটি নেট। (NHibernate) এ পোর্ট করা হয়েছে যাতে আপনি এটি সেখানেও ব্যবহার করতে পারেন।


4
আমি এইচআইবিকেও ভোট দিই, তবে একটি গুরুত্বপূর্ণ সংযোজন সহ: আমাদের জেপিএ এপিআই কেবলমাত্র ব্যবহার করা উচিত এমনকি যদি জেপিএ বাস্তবায়ন হিব দ্বারা সরবরাহ করা হয়।
ভ্লাদিমির দিউজেভ

52

হাইবারনেট, কারণ এটি:

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

ওআরএম কেন (এবং কখন) ব্যবহার করবেন সে সম্পর্কে কয়েকটি পয়েন্ট:

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

আমি যখন হাইবারনেট এবং জেপিএ তুলনা করি তখন আমি হাইবারনেটের জন্য যাই, এবং জেপিএ এবং জেডিওর তুলনা করলে আমি জেডিও-তে যাই! আমি জেডিওকে খুব পছন্দ করি তবে আমি হাইবারনেটের দুটি বৈশিষ্ট্য পছন্দ করি (যা জেডিওতে পাওয়া যায় না) একটি হ'ল @ ফিল্টার এবং অন্যটি হ'ল সংস্করণ ক্ষেত্রগুলি (আশাবাদী লকিংয়ের জন্য) সাধারণ ক্ষেত্রগুলিতে মানচিত্র করতে পারেন যা জেডিওতে সম্ভব নয় which ।
আমির পাশাজাদেহে

27

আমি মাইবাটিস ব্যবহার করার পরামর্শ দেব । এটি জেডিবিসির উপরে একটি পাতলা স্তর, টেবিলগুলিতে অবজেক্টগুলিকে মানচিত্র করা খুব সহজ এবং এখনও প্লেইন এসকিউএল ব্যবহার করা যায়, সবকিছুই আপনার নিয়ন্ত্রণে থাকে।


10
জটিল পড়ার জন্য ইব্যাটিস, এবং তৈরি, হালনাগাদ মুছতে এবং সহজ পাঠের জন্য হাইবারনেট নিখুঁত পছন্দ।
ডারপেট

19

আমি মাঝারি আকারের জাভাএসই অ্যাপ্লিকেশন লেখার সময় আভাজে ইবেইনের সাথে আমার খুব ভাল অভিজ্ঞতা হয়েছিল।

এটি সত্তা সংজ্ঞায়িত করতে স্ট্যান্ডার্ড জেপিএ টীকাগুলি ব্যবহার করে তবে অনেক সহজ এপিআই প্রকাশ করে (কোনও এনটিটিম্যানেজার বা কোনও সংযুক্ত / বিচ্ছিন্ন সংস্থাগুলির ক্র্যাপ নয়)। এটি আপনাকে যখন প্রয়োজন হয় তখন সহজেই এসকিউএল কোয়েরি বা ইভেন্ট প্লেন জেডিবিসি কলগুলি সহজেই ব্যবহার করতে দেয়।

এটিতে ক্যোয়ারির জন্য খুব সুন্দর তরল এবং টাইপ-নিরাপদ এপিআই রয়েছে। আপনি এই জাতীয় জিনিস লিখতে পারেন:

List<Person> boys = Ebean.find(Person.class)
                                  .where()
                                       .eq("gender", "M")
                                       .le("age", 18)
                                  .orderBy("firstName")
                                  .findList();

6
আমাকে অবশ্যই কিছুটা অদ্ভুত হতে হবে ... এমন ব্যক্তি থেকে নির্বাচন করুন যেখানে লিঙ্গ = 'এম' এবং বয়স <18 প্রথম নাম দ্বারা অর্ডার করা আমার কাছে আরও ভাল দেখাচ্ছে :-)
ইয়েলকো

4
এটি জাভাতে আমি দেখেছি আরও ভাল একটি orms। সিঙ্গলটন ব্যবহারের সিদ্ধান্তটি সতেজকারী এবং এটি অন্যদের কাছে প্রচুর ব্যবহারিক সুবিধা দেয়।
opsb

আমি মনে করি আপনার অর্থ সাবলীল নয়, তরল নয়।
মন্টদিডিয়ার

@opsb আমি প্রযুক্তিগতভাবে মনে করি এটি একক একক নয়, একক একা।
মন্টদিডিয়ার

আভাজে ইবিন ওআরএম দিয়ে কীভাবে শুরু করবেন? কোন ভিডিও টিউটোরিয়াল ??
অবিনাশ

11

সিম্পলআরএম , কারণ এটি সোজা-ফরোয়ার্ড এবং কোনও যাদু নয়। এটি জাভা কোডের সমস্ত মেটা ডেটা স্ট্রাকচার সংজ্ঞায়িত করে এবং খুব নমনীয়।

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

তবে হাইবারনেটের বিপরীতে, সিম্পলআরএম খুব সাধারণ অবজেক্ট স্ট্রাকচার এবং আর্কিটেকচার ব্যবহার করে যা জটিল পার্সিং, বাইট কোড প্রসেসিং ইত্যাদির প্রয়োজনীয়তা এড়ায় Simple নির্ভরতা (Slf4j)। (হাইবারনেট 2400K এর বেশি এবং প্রায় 2000K নির্ভরশীল জার্সের ওপরে)) এটি সরলঅরএমটি বুঝতে সহজ করে তোলে এবং প্রযুক্তিগত ঝুঁকি হ্রাস করে।


এটি ব্যবহার করেন নি, তবে অ্যাক্টিভঅবজেক্টস তাদের ওয়েবসাইটে নিজেকে হাইবারনেট-লাইটের ধরণ হিসাবে বর্ণনা করে, তাই সম্ভবত কিছুটা মিল রয়েছে।
আবদুল্লাহ জীবনবল

10

গ্রহন লিংক , অনেক কারণে, তবে উল্লেখযোগ্যভাবে আমি মনে করি এটির অন্যান্য মূল স্ট্রিম সলিউশনগুলির তুলনায় (কম-বেশি আপনার মুখের ফোটা ফোটা) কম ফুলেছে।

ওহ এবং এক্সলিপস লিঙ্কটি জেপিএ ২.০ এর জন্য রেফারেন্স বাস্তবায়ন হিসাবে বেছে নেওয়া হয়েছে


5

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

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


11
আপনি যদি আমাদের মতো অনেকের মতো ধ্রুবক স্টোরের উপরে অ্যাপ্লিকেশন তৈরি করে থাকেন তবে তা কোনও আরডিবিএমএস বা কোনও নোএসকিউএল স্বাদযুক্ত কিনা, সেই স্টোরটিতে এটি অ্যাক্সেস করার নিজস্ব দক্ষ উপায় থাকবে। এটির থেকে খুব বেশি বিমূর্ত করার চেষ্টা করা কেবলমাত্র অতিরিক্ত কাজ করা ine 'সত্য ওডিওডি' সম্পর্কে অত্যধিক উদ্যোগী হয়ে ওঠা এই নভোচারী আর্কিটেকচার জাভা কুখ্যাত।
ইলকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.