লিনকু এর জাভা সমতুল্য কী? [বন্ধ]


820

লিনকিউ এর জন্য জাভা সমতুল্য কী?


4
এগুলি এসকিউএল-তে লিনকিউ বলে মনে হচ্ছে।
এসএলএক্স

8
এটি দেখুন: github.com/nicholas22/jpropel-light, আসল উদাহরণ: নতুন স্ট্রিং [] {"জেমস", "জন", "জন", "এডি" where। কোথাও (স্টার্টস উইথ ("জে")) থেকে তালিকান () .distinct ();
NT_

1
জাভা পিপিএল এখনও একাধিক স্টেটমেন্ট এবং
ফোরচ


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

উত্তর:


808

জাভার জন্য লিনকিউ-এর মতো কিছুই নেই।

...

সম্পাদন করা

এখন জাভা 8 এর সাথে আমরা স্ট্রিম এপিআই'র সাথে পরিচয় করিয়েছি , সংগ্রহে কাজ করার সময় এটি একই ধরণের জিনিস, তবে এটি লিনকের মতো নয়।

এটি যদি কোনও ORM হয় তবে আপনি সত্তা ফ্রেমওয়ার্কের মতো সন্ধান করছেন তবে আপনি হাইবারনেট চেষ্টা করতে পারেন

:-)


9
পরিকল্পনা আছে কিছু আছে? ভাষায় একীভূত? একটি JCP নম্বর আছে? ইত্যাদি ইত্যাদি
চিজো

6
খুব সত্য, যদিও
লিনিক্যু সুন্দরকে

11
দুঃখিত, 'খুব সত্য' 280Z28 এর জন্য বোঝানো হয়েছিল। আমি জানি না এর জন্য কোন জিসিপি আছে কিনা। জিসিপি যে গতিতে কাজ করে আমি তার নিঃশ্বাস ত্যাগ করব না বলে লিনকিউ সি # ভাষায় বেশ কয়েকটি পরিবর্তন প্রয়োজন।
AgileJon

12
এটি সঠিক নয়। দেখুন: stackoverflow.com/questions/10879761/...
Scooterville

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

154

বিকল্প বিকল্প আছে, কুলিকেশন

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

from(people).where("name", eq("Arthur")).first();
from(people).where("age", lessThan(20)).all();
from(people).where("name", not(contains("Francine"))).all();

7
কলাম নামের জন্য স্ট্রিং, যার অর্থ সংকলক এবং আইডিই স্বতঃপূরণ টাইপগুলির বিরুদ্ধে সহায়তা করবে না এবং রিফ্যাক্টরিং শক্ত। যে কোন পরিকল্পনা আছে?
Ekevoo

2
হাই, ইকভু আমি মনে করি এটি দুর্দান্ত হবে এবং আমি চেষ্টা করেছি যে এটি কিছু সময় করা উচিত। তবে এই মুহুর্তে, জাভা 8 এর সাথে, কুলিকেশনটি হ'ল অবচয় re সম্ভবত এটি প্রাচীনতম প্রকল্পগুলির জন্য দরকারী ... আপনার কী মনে হয়?
19WAS85

1
@ ওয়াগনারআরান্ডে সর্বশেষ প্রতিশ্রুতি 5-6 বছর আগে। আমি ধরে নিচ্ছি কার্যকারিতাটি মূলত জাভা 8 দ্বারা প্রতিস্থাপিত হয়েছিল? এছাড়াও, খুব দুর্দান্ত নাম :)
আব্দুল

145

জাভাটিএম প্রোগ্রামিং ভাষার জন্য লাম্বদা এক্সপ্রেশন - লাম্বডাস এখন JSR-335 আকারে জাভা 8 এর মধ্যে উপলব্ধ available

আপডেট : জেডিকে 8 এখন প্রকাশিত হয়েছে যার মধ্যে ল্যাম্বদা প্রকল্প রয়েছে। বর্তমানে এমএএপি-তে অ্যাকশায় জাভা 8 এর একটি অনুলিপি ধরার উপযুক্ত।

একটি পড়া আছে ব্রায়ান Goetz কিভাবে lambdas JDK8 মধ্যে প্রয়োগ করা হয় পাশাপাশি স্ট্রিম, অভ্যন্তরীণ পুনরাবৃত্তির, একটি বোঝার হত্তন একটি শালীন বোঝার জন্য lambdas সংক্রান্ত প্রবন্ধ শর্ট-সার্কিট এবং কন্সট্রাকটর রেফারেন্স .. এছাড়াও JSR এর আরও উদাহরণ পেতে উপরে খুঁজে বার করো ।

আমি lambdas ব্যবহার JDK8 নামক সুবিধার কিছু একটা ব্লগ লিখেছি তীর পাওয়ার , এছাড়াও NetBeans 8 JDK8 যা আমিও সম্পর্কে ব্লগ করেছি নির্মান রূপান্তরের জন্য মহান সমর্থন আছে NetBeans সঙ্গে JDK থেকে 8 মাইগ্রেট


লাম্বদাসও জাভা 7-তে থাকার সময়সূচী ছিল না? তাতে কি হয়েছে?
ব্লুরাজা - ড্যানি পিফ্লুঘিওফ্ট

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

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

6
লাম্বদা এক্সপ্রেশনগুলি লিনকিউ এর সামান্য অংশ।
সিসিসপ্লে

4
@ নিউউএনইও, আপনি যদি সি # তে কোয়েরি ভাষাটি উল্লেখ করছেন তবে হ্যাঁ, জাভাতে এর মতো কিছুই আসছে না, তবে আমার অভিজ্ঞতায় বেশিরভাগ পাকা সি # বিকাশকারী কোয়েরি ভাষার চেয়ে ল্যাম্বডা সিনট্যাক্স পছন্দ করেন। তবে আপনি উদাহরণস্বরূপ যদি লিনকিউ-টু-সত্তা উল্লেখ করছেন তবে আপনি দেখতে পাবেন যে জাভাতে ল্যাম্বডাস এটি এবং আরও সক্ষম করে দেবে। এটি সক্ষম করতে জাভা 8 এ আরও অনেক কিছু আসছে, যেমন ডিফেন্ডার পদ্ধতিগুলি
ব্রেট রায়ান

119

ল্যাম্বজ লাইব্রেরিটি ব্যবহার করে আপনি আরও পঠনযোগ্য উপায়ে সংগ্রহের আইটেমগুলি (এবং আরও অনেক কিছু) চয়ন করতে পারেন

https://code.google.com/archive/p/lambdaj/

কোয়ের লাইব্রেরিতে এর কিছু সুবিধা রয়েছে কারণ এটি কোনও যাদু স্ট্রিং ব্যবহার করে না, এটি সম্পূর্ণরূপে নিরাপদ এবং আমার মতে এটি আরও পাঠযোগ্য ডিএসএল সরবরাহ করে।


6
এটি দুর্দান্ত, তবে কোয়েরি তৈরি করা এবং এটিকে আবার
চালিত করতে এসকিএল

আমার অ্যান্ড্রয়েড প্রজেক্টের কাস্টম ক্লাসে ল্যাম্বডজ সিলেক্ট করার সময় আমি কেন java.lang.ExceptionInInitializerError পাচ্ছি?
topwik

1
আমাদের মধ্যে যারা এসকিউএল / এক্সএমএল সম্পর্কে চিন্তা করেন না এবং কেবল সংগ্রহগুলিতে আরও সহজ অ্যাক্সেস চান তাদের পক্ষে এটি +1 সত্যিই ভাল।
ashes999

101

আপনি নিজের সমতুল্য তৈরি করতে জাভ্যাক ব্যবহার না করে আপনি লিনকিউ এর সমতুল্য পাবেন না।

সেদিন অবধি যখনই কেউ এটি করার জন্য একটি কার্যকর উপায় খুঁজে পায়, তখন কিছু ভাল বিকল্প রয়েছে as


github.com/TrigerSoft/jaque এটি খুঁজে পেয়েছে এবং এক্সপ্রেশন ট্রি তৈরি করতে দেয়। জাভা 8 লাম্বডাসের সাথে মিলিত, যে কোনও লিনকিউ ক্ষমতা। নেট হিসাবে একই প্রচেষ্টা সহ প্রয়োগ করা যেতে পারে।
কনস্ট্যান্টিন ট্রিগার

তুলনা করার জন্য এই উত্তরটি দেখুন: stackoverflow.com/questions/25989449/…
কনস্ট্যান্টিন ট্রিগার

49

অবজেক্টগুলিতে লিনকিউ - জাভা 8 স্ট্রিম এপিআই যুক্ত করেছে যা মানগুলির স্রোতে ক্রিয়ামূলক-স্টাইলের ক্রিয়াকলাপগুলির জন্য সমর্থন যোগ করে:

প্যাকেজ java.util.stream

জাভা 8 ব্যাখ্যা: জাভা সংগ্রহগুলিতে ল্যাম্বডাস প্রয়োগ করা

লিংক থেকে এসকিউএল / এনএইচবারনেট / ইত্যাদি। (ডাটাবেস অনুসন্ধান) - একটি বিকল্প হ'ল জিনকিউ ব্যবহার করা যা নতুন জেভিএ 8 বৈশিষ্ট্যগুলিও ব্যবহার করে এবং 26 ফেব্রুয়ারী, গিথুবে প্রকাশিত হয়েছিল: https://github.com/my2iu/Jinq

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

জিনকিউ প্রকল্পের সাইট: http://www.jinq.org/


স্ট্রিম এপিআই লিনকুয়ের নিকটতমতম সত্ত্বেও পাঠকরা কেন আপনার উত্তরের দিকে মনোযোগ দিল না তা নিশ্চিত নয়!
রাফিদ

3
স্ট্রিমস এআইপিআই লিনকু এর তুলনায় একটি খারাপ রসিকতা।
আন্দ্রে রিনিয়া

1
দুঃখিত মানুষ, অভদ্র হওয়ার অর্থ নয়। আমি স্ট্রিমস এপিআই দিয়ে আমার মাথাটি মারার পরে লিনকিউ সমমানের সন্ধান করছিলাম। আমি কেবল বলতে চেয়েছিলাম যে এটি সত্যিকারের সমতুল্য নয়, এগুলিই।
আন্দ্রে রিনিয়া

1
@ আন্দ্রেরিনিয়া আপনি কি লিনকিউ সরবরাহকারীদের (লিনকু থেকে এক্সএমএল, লিনকিউ থেকে জেএসন, লিনকু থেকে এনহাইবারনেট ইত্যাদি) সমতুল্য কার্যকারিতা খুঁজছেন?
রেজওয়ান ফ্ল্যাভিয়াস পান্ডা

2
আমার যা যা প্রয়োজন তা হ'ল একটি সংকলনের গোষ্ঠীকরণের সর্বোচ্চ উপায় এবং শেষ পর্যন্ত আমি অনেক চেষ্টা ও প্রচুর কোড সহ সফল হয়েছি।
আন্দ্রে রিনিয়া

29

কোয়ের নামে একটি প্রকল্প রয়েছে

এটি একটি জাভা ফ্রেমওয়ার্ক যা সংগ্রহগুলি অনুসন্ধানের ক্ষমতা যুক্ত করে।

দ্রষ্টব্য: লেখকের মতে, প্রকল্পটি আর রক্ষণাবেক্ষণ করা হচ্ছে না।


2
কোয়েয়ার দেখে মনে হচ্ছে এটি LINQ যা সরবরাহ করে তার কিছুটা সরবরাহ করে তবে প্রশ্নটি একটি 'সমতুল্য' এর জন্য
AgileJon

6
সুতরাং এটি লিনকিউ এর মতো কিছু , যদি সরাসরি সমতুল্য না হয়? এটি অন্তত সহায়ক মনে হচ্ছে
ব্রায়ান অগ্নিউ

3
@ অজিলেজোন: যদি তিনি সত্যিই সমতুল্য বলতে চাইতেন তবে তিনি জিজ্ঞাসা করতেন না। তিনি টাইপ from x in xs select xকরে উত্তরটি খুঁজে পেতে পারতেন (না)।
kizzx2

18

জাভা এর জন্য অনেকগুলি লিনকুই সমতুল্য রয়েছে, তুলনার জন্য এখানে দেখুন ।

টাইপসেফ কোয়েয়ার / লিনকিউ স্টাইল ফ্রেমওয়ার্কের জন্য কোয়েরিএসএল ব্যবহার বিবেচনা করুন । কোয়েরিএসএল জেপিএ / হাইবারনেট, জেডিও, এসকিউএল এবং জাভা সংগ্রহগুলি সমর্থন করে।

আমি ক্যুরিডসল এর রক্ষণাবেক্ষণকারী, সুতরাং এই উত্তরটি পক্ষপাতদুষ্ট।


6
"অনুরূপ ফ্রেমওয়ার্ক" লিঙ্কটি মারা গেছে। আপনার কি এখনও একটি সমমানের পৃষ্ঠা আছে?
লুকাস এদার

আমরা কখন কোয়েরিডিএসএল বইটি পাব? অথবা সাশ্রয়ী মূল্যের প্রশিক্ষণের বিকল্পগুলি? আপনার সমর্থন লিঙ্ক 404s।
কোর্ভিন

16

আপনি স্কেল ব্যবহার করতে পারেন, এটি সিনট্যাক্সের অনুরূপ এবং এটি সম্ভবত লিনকের চেয়ে আরও শক্তিশালী।


1
ESP। স্কেলার "বোঝার জন্য"।
নিকো

10

২০১৪-তে, আমি অবশেষে বলতে পারি যে লিনকিউ অবশেষে জাভা ৮.তে রয়েছে তাই আর লিনকিউয়ের বিকল্প খুঁজে পাওয়ার দরকার নেই।


9

এখন জাভা 8 ল্যাম্বডাস সমর্থন করে, লিনাকের সাথে সাদৃশ্যযুক্ত জাভা এপিআই তৈরি করা সম্ভব।

জিনাক জাভা-র জন্য এই নতুন লিনকিউ-স্টাইলের লাইব্রেরিগুলির মধ্যে একটি।

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


8

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

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


6
আপনি প্রকল্পে আপনার ভূমিকা উল্লেখ করতে চাইতে পারেন।
থরবজর্ন রাভন অ্যান্ডারসন

8

এসকিউএল বাস্তবায়ন থেকে জাভা লিনিক্ .NET লিনকু এর সাথে তুলনা করে পূর্ণ ভাষা সংহতকরণ এবং আরও বড় বৈশিষ্ট্য সেট সরবরাহ করে।


2
আমরা কীভাবে লিনকু-র সাথে এক্সএমএল ফাইলগুলি পড়তে / লিখতে ব্যবহার করতে পারি?
খুররম মাজিদ

7

আমি গুগল থেকে পেয়ারা-লাইব্রেরি চেষ্টা করেছি । এটির একটি FluentIterableযা আমি মনে করি লিনকুইয়ের কাছাকাছি। আরো দেখুন FunctionalExplained

List<String> parts = new ArrayList<String>();  // add parts to the collection.    
FluentIterable<Integer> partsStartingA = 
    FluentIterable.from(parts).filter(new Predicate<String>() {
        @Override
        public boolean apply(final String input) {
            return input.startsWith("a");
        }
    }).transform(new Function<String, Integer>() {
        @Override
        public Integer apply(final String input) {
            return input.length();
        }
    });

জাভা জন্য একটি বিস্তৃত গ্রন্থাগার বলে মনে হচ্ছে। অবশ্যই লিনকিউর মতো সাবলীল নয় তবে আকর্ষণীয় দেখাচ্ছে looks


7

https://code.google.com/p/joquery/

বিভিন্ন সম্ভাবনার সমর্থন করে,

দেওয়া সংগ্রহ,

Collection<Dto> testList = new ArrayList<>();

ধরণের,

class Dto
{
    private int id;
    private String text;

    public int getId()
    {
        return id;
    }

    public int getText()
    {
        return text;
    }
}

ছাঁকনি

জাভা 7

Filter<Dto> query = CQ.<Dto>filter(testList)
    .where()
    .property("id").eq().value(1);
Collection<Dto> filtered = query.list();

জাভা 8

Filter<Dto> query = CQ.<Dto>filter(testList)
    .where()
    .property(Dto::getId)
    .eq().value(1);
Collection<Dto> filtered = query.list();

এছাড়াও,

Filter<Dto> query = CQ.<Dto>filter()
        .from(testList)
        .where()
        .property(Dto::getId).between().value(1).value(2)
        .and()
        .property(Dto::grtText).in().value(new string[]{"a","b"});

বাছাই করা হচ্ছে (জাভা 7 এর জন্যও উপলব্ধ)

Filter<Dto> query = CQ.<Dto>filter(testList)
        .orderBy()
        .property(Dto::getId)
        .property(Dto::getName)
    Collection<Dto> sorted = query.list();

গোষ্ঠীকরণ (জাভা 7 এর জন্যও উপলব্ধ)

GroupQuery<Integer,Dto> query = CQ.<Dto,Dto>query(testList)
        .group()
        .groupBy(Dto::getId)
    Collection<Grouping<Integer,Dto>> grouped = query.list();

যোগদান করে (জাভা 7 এর জন্যও উপলব্ধ)

দেওয়া,

class LeftDto
{
    private int id;
    private String text;

    public int getId()
    {
        return id;
    }

    public int getText()
    {
        return text;
    }
}

class RightDto
{
    private int id;
    private int leftId;
    private String text;

    public int getId()
    {
        return id;
    }

    public int getLeftId()
        {
            return leftId;
        }

    public int getText()
    {
        return text;
    }
}

class JoinedDto
{
    private int leftId;
    private int rightId;
    private String text;

    public JoinedDto(int leftId,int rightId,String text)
    {
        this.leftId = leftId;
        this.rightId = rightId;
        this.text = text;
    }

    public int getLeftId()
    {
        return leftId;
    }

    public int getRightId()
        {
            return rightId;
        }

    public int getText()
    {
        return text;
    }
}

Collection<LeftDto> leftList = new ArrayList<>();

Collection<RightDto> rightList = new ArrayList<>();

যোগদান করা যেতে পারে মত,

Collection<JoinedDto> results = CQ.<LeftDto, LeftDto>query().from(leftList)
                .<RightDto, JoinedDto>innerJoin(CQ.<RightDto, RightDto>query().from(rightList))
                .on(LeftFyo::getId, RightDto::getLeftId)
                .transformDirect(selection ->  new JoinedDto(selection.getLeft().getText()
                                                     , selection.getLeft().getId()
                                                     , selection.getRight().getId())
                                 )
                .list();

প্রকাশ

Filter<Dto> query = CQ.<Dto>filter()
    .from(testList)
    .where()
    .exec(s -> s.getId() + 1).eq().value(2);

5

তুমি আমার গ্রন্থাগার চেষ্টা করে দেখতে পারেন CollectionsQuery । এটি অবজেক্টের সংগ্রহের উপরে প্রশ্নের মতো লিনকুই চালাতে দেয়। আপনাকে লিনিকিউয়ের মতোই প্রিকিকেট পাস করতে হবে। আপনি যদি ইন্টারফেসের সাথে পুরানো বাক্য গঠন ব্যবহার করার চেয়ে জাভা / / using ব্যবহার করছেন:

List<String> names = Queryable.from(people)
                                    .filter(new Predicate<Person>() {
                                                public boolean filter(Person p) {
                                                    return p.age>20;
                                                }
                                            })
                                    .map   (new Converter<Person,String>() {
                                                public Integer convert(Person p) {
                                                    return p.name;
                                                }
                                            })
                                    .toList();

আপনি এটি জাভা 8, বা পুরানো জাভাতে রেট্রোলেম্বদা এবং এটি গ্রেড প্লাগইন ব্যবহার করতে পারেন, তারপরে আপনার নতুন অভিনব বাক্য গঠন থাকবে:

List<String> names = Queryable.from(people)
                                    .filter(p->p.age>20)
                                    .map   (p->p.name)
                                    .toList();

আপনার উপরে ডিবি কোয়েরিগুলি চালনার দরকার হলে আপনি জিনকিউ দেখতে পারেন, তবে এটি রেট্রোলেম্বদা দ্বারা সিরিয়ালযুক্ত ল্যাম্বডাস ব্যবহারের জন্য ব্যাক-পোর্ট করা যাবে না।


খুশী হলাম। ভালো লেগেছে leanpub.com/whatsnewinjava8/read#leanpub-auto-mapfilterreduce
realbart

4

কেবলমাত্র অন্য বিকল্প যুক্ত করতে: জাভা 6. জাফ্যাক্স.পার্সপেনসিটিসিটিরিয়া প্যাকেজ ব্যবহার করে টাইপ-নিরাপদ ডাটাবেস প্রশ্নের জন্য জাভা 6 এর সমাধান রয়েছে ।

যদিও আমি অবশ্যই বলব যে এটি আসলে লিনকিউ নয়, কারণ লিনকিউ দিয়ে আপনি যেকোনও মূল সংখ্যা জিজ্ঞাসা করতে পারেন।


হ্যাঁ এটি একটি জেপিএ এপিআই। লিনকিউ থেকে দূরে, তবে কিছুই না থেকে ভাল। এবং কেউ বলতে পারেন এটি হাইবারনেট ক্রিটারিয়া এপিআই এর উপর ভিত্তি করে। দেখুন: docs.jboss.org/hibernate/core/3.6/reference/en-US/html/...
হেন্ডি উত্থাপন Irawan

4

এখানে একটি খুব ভাল গ্রন্থাগার রয়েছে যা আপনি এটির জন্য ব্যবহার করতে পারেন।

এখানে অবস্থিত: https://github.com/nicholas22/jpropel-light

জাভা 8 পর্যন্ত লাম্বডাস উপলব্ধ থাকবে না, সুতরাং এটি ব্যবহার করা কিছুটা আলাদা এবং এটি প্রাকৃতিক বলে মনে হয় না।


4

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

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

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


4

বেসিক ফাংশনাল কালেকশনের জন্য, জাভা 8 এর মধ্যে এটি নির্মিত হয়েছে, বেশিরভাগ মুখ্য নন-জাভা জেভিএম ভাষা এটি (স্কেলা, ক্লোজার, ইত্যাদি) তৈরি করেছে এবং আপনি পূর্ববর্তী জাভা সংস্করণগুলির জন্য লিবাস যোগ করতে পারেন।

কোনও এসকিউএল ডাটাবেসে সম্পূর্ণ ভাষার সংহত অ্যাক্সেসের জন্য, স্কালা (জেভিএম-তে চালিত হয়) স্লিক রয়েছে


3

লিনকুই (লাইনকিউ থেকে অবজেক্টস) এর জন্য জাভা 8 এর কিছু সমতুল্য হবে, দেখুন প্রকল্প লাম্বদা

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

তবে ভবিষ্যতে জাভা সম্পর্কিত ঘোষণামূলক প্রশ্নের মতো কিছু থাকবে বলে আমি মনে করি না।


2

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

from(animals).where("getName", contains("o")).all();

কোয়েরির উপরের বিবৃতিতে তাদের নামে 'ও' বর্ণমালা রয়েছে এমন প্রাণীর তালিকা থাকবে। আরও তথ্য দয়া করে নিম্নলিখিত ব্লগটি দিয়ে যান। http://javaworldwide.blogspot.in/2012/09/linq-in-java.html


2

ক্ষুদ্র-কিউ পরীক্ষা করে দেখুন । (মনে রাখবেন আপনি বর্তমানে এটি ডাউনলোড করতে পারবেন না))

উপরের লিঙ্কটি অভিযোজিত একটি উদাহরণ এখানে:

প্রথমে আমাদের কিছু ডেটা সংগ্রহ দরকার, আসুন স্ট্রিংগুলির একটি সেট বলুন

String[] strings = { "bla", "mla", "bura", "bala", "mura", "buma" };

এখন আমরা কেবল স্ট্রিং নির্বাচন করতে চাই যা "বি" দিয়ে শুরু হয়:

Query<String> stringsStartingWithB = new Query<String>(strings).where(
    new Query.Func<String, Boolean>(){
        public Boolean run(String in) {
            return in.startsWith("b");
        }
    }
);

কোনও আসল ডেটা অনুলিপি করা হয়নি বা এর মতো কিছু নেই, আপনি পুনরাবৃত্তি শুরু করার সাথে সাথে এটি প্রক্রিয়া করা হবে:

for(String string : stringsStartingWithB ) {
    System.out.println(string);
}

1

জাভাক জাওয়ার জন্য লিনকুই সমতুল্য। যদিও এটি H2 ডাটাবেসের জন্য তৈরি করা হয়েছিল, এটি যে কোনও ডাটাবেসের জন্য কাজ করা উচিত কারণ এটি জেডিবিসি ব্যবহার করে।


1

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

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


1
গ্রোভি বা জেবুবিও কার্যকর প্রার্থী হতে পারে, যেহেতু তাদের সবারই অনেক বেশি কার্যকরী স্বভাব রয়েছে।
সিডেসেক

1

একজন বেনামে ব্যবহারকারী অন্যটির উল্লেখ করেছেন, ডেটিং :

ডাইটিং হ'ল একটি ক্লাসের লাইব্রেরি চেইনযোগ্য পদ্ধতিগুলির মাধ্যমে সংগ্রহের বিষয়ে জিজ্ঞাসা ক্ষমতা এবং .NET- এ লিনকের মতো বেনামে ইন্টারফেস সরবরাহ করে is অন্যান্য সংগ্রহশালা লাইব্রেরির বিপরীতে স্ট্যাটিক পদ্ধতি ব্যবহার করে পুরো সংগ্রহটির পুনরাবৃত্তি প্রয়োজন, ডেটিং একটি মূল সরবরাহ করে যা সংকলন বা অ্যারেতে ক্যোয়ারী প্রয়োগের জন্য বিশিষ্ট শৃঙ্খলাবদ্ধ পদ্ধতিগুলি রয়েছে একটি বিশিষ্ট শ্রেণীর উইচটিতে।

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


1

স্কালা.এখন আমি তারা এটি পড়তে দেখেছি এবং এটি লিনাকের মতো তবে আরও সহজ এবং আরও অপঠনযোগ্য found কিন্তু স্কালাল লিনাক্সে চলতে পারে, হ্যাঁ? csharp মনো মনোভাব প্রয়োজন।


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

@ রুপ জিএনইউ / লিনাক্সের জন্য সম্পূর্ণরূপে মেনে চলার জন্য জেআরই রয়েছে , এবং মনো কোনও সম্পূর্ণরূপে অনুগত নয় । নেট বাস্তবায়ন নয়।
নাম

@ সার্জে এটি আমার বক্তব্য ছিল না, তবে মনো লিনক্যু যথেষ্ট চালায় তাই না? এছাড়াও, এখন মাইক্রোসফ্টের নিজস্ব । লিনাক্সের জন্য নেট কোর et
রুপ

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

0

প্রোগ্রামিং ল্যাঙ্গুয়েজ পিজ্জা ছিল (একটি জাভা এক্সটেনশন) এবং আপনার এটি দেখতে হবে। - এটি ঘোষিত পদ্ধতিতে ডেটা জিজ্ঞাসা করতে "সাবলীল ইন্টারফেস" ধারণাটি ব্যবহার করে এবং এটি নীতিগতভাবে লিনিকউ ডাব্লু / ও ক্যোয়ারী এক্সপ্রেশন (http://en.wikedia.org/wiki/Pizza_programming_language) এর সাথে সমান। হায় আফসোস এটি অনুসরণ করা হয়নি, তবে জাভাতে লিনিক্যু সদৃশ কিছু পাওয়ার এক উপায় ছিল।


1
অবশ্যই এটি অনুসরণ করা হয়েছিল, কেবল "পিজ্জা" নামে নয়। পিজা থেকে জেনেরিকগুলি জিজেতে মিশে গেছে, যা পরে জাভা 1.3 রেফারেন্স সংকলক হয়ে উঠেছে (যদিও জেনেরিকগুলি 1.5 এর পূর্ব পর্যন্ত একটি পতাকার পিছনে লুকিয়ে ছিল)। এরই মধ্যে ... বাকি ধারণাগুলি, আরও কয়েকটি অতিরিক্ত স্ক্যালায় পরিণত হয়েছিল।
কেভিন রাইট

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

Commons.apache.org/proper/commons-gnl এ ওএনজিএল দেখুন , যা ব্যবহৃত এবং এখনও রক্ষণাবেক্ষণ করা হচ্ছে।
নিকো


0

আপনি এই লাইব্রেরিটি চেষ্টা করতে পারেন: https://code.google.com/p/qood/

এটি ব্যবহার করার কয়েকটি কারণ এখানে রয়েছে:

  1. লাইটওয়েট: মাত্র 9 টি পাবলিক ইন্টারফেস / ক্লাস শিখতে হবে।
  2. এসকিউএল এর মতো ক্যোয়ারী: গ্রুপ-বাই, অর্ডার-বাই, বাম জোড়, সূত্র ইত্যাদি সমর্থন করুন।
  3. বড় ডেটার জন্য: হ্যাপ মেমোরির পরিবর্তে ফাইল (কিউএফএস) ব্যবহার করুন।
  4. অবজেক্ট-রিলেশনাল ইম্পিডেন্স ম্যাচ ম্যাচটি সমাধান করার চেষ্টা করুন ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.