হাইবারনেট, @ সিকোয়েন্সজেনেটর এবং এলোকেশনসাইজ


117

হাইবারনেটের ডিফল্ট আচরণটি আমরা সকলেই জানি যখন ব্যবহার করি @SequenceGenerator- এটি একের মাধ্যমে প্রকৃত ডাটাবেস ক্রম বৃদ্ধি করে , এই মানটিকে 50 (ডিফল্ট allocationSizeমান) দ্বারা একাধিক করে - এবং তারপরে এই মানটি সত্তা আইডি হিসাবে ব্যবহার করে।

এটিকে অযথাযথ আচরণ এবং সাথে সঙ্ঘাত হয় স্পেসিফিকেশন যেখানে বলা আছে:

বরাদ্দ আকার - (ptionচ্ছিক) ক্রম থেকে ক্রম সংখ্যা বরাদ্দ করার সময় বাড়ানোর পরিমাণ।

পরিষ্কার হতে: আমি উত্পন্ন আইডিগুলির মধ্যে ফাঁকগুলি নিয়ে মাথা ঘামাই না।

আমি অন্তর্ভুক্ত ডেটাবেস ক্রম সাথে সামঞ্জস্যপূর্ণ নয় এমন আইডি সম্পর্কে যত্নশীল । উদাহরণস্বরূপ: অন্য কোনও অ্যাপ্লিকেশন (উদাহরণস্বরূপ প্লেইন জেডিবিসি ব্যবহার করে) সিকোয়েন্স থেকে প্রাপ্ত আইডির অধীনে নতুন সারি সন্নিবেশ করতে চাইতে পারে - তবে এই সমস্ত মানটি ইতিমধ্যে হাইবারনেট দ্বারা ব্যবহৃত হতে পারে! ম্যাডনেস।

কেউ কি এই সমস্যার কোনও সমাধান জানেন (সেটআপ না করে allocationSize=1এবং এইভাবে কর্মক্ষমতা হ্রাস করে)?

সম্পাদনা:
বিষয়গুলি পরিষ্কার করার জন্য। যদি সর্বশেষ recordোকানো রেকর্ডে আইডি = থাকে 1, তবে এইচবি 51, 52, 53...একই সাথে তার নতুন সত্তাগুলির জন্য মানগুলি ব্যবহার করে: কিন্তু ডাটাবেসে ক্রমের মান সেট করা হবে 2। অন্যান্য অ্যাপ্লিকেশনগুলি যখন এই ক্রমটি ব্যবহার করে যা সহজেই ত্রুটির দিকে পরিচালিত করতে পারে।

অন্যদিকে: স্পেসিফিকেশন বলছে (আমার বোঝার মধ্যে দিয়ে) যে ডাটাবেস ক্রমটি সেট করা উচিত ছিল 51এবং এর মধ্যে এইচবি'র পরিসীমা থেকে মানগুলি ব্যবহার করা উচিত 2, 3 ... 50


আপডেট:
স্টিভ এবারসোল নীচে উল্লিখিত হিসাবে: আমার দ্বারা বর্ণিত আচরণ (এবং অনেকের কাছে সবচেয়ে স্বজ্ঞাত) সেট করে সক্রিয় করা যেতে পারে hibernate.id.new_generator_mappings=true

সবাইকে ধন্যবাদ.

আপডেট 2:
ভবিষ্যতের পাঠকদের জন্য নীচে আপনি একটি কাজের উদাহরণ খুঁজে পেতে পারেন।

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ")
    @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS")
    private Long id;
}

persistence.xml

<persistence-unit name="testPU">
  <properties>
    <property name="hibernate.id.new_generator_mappings" value="true" />
  </properties>
</persistence-unit>

2
"বরাদ্দ সাইজ = 1 সেট না করে এবং এইভাবে পারফর্ম্যান্সকে হ্রাস করে" কেন এটি সম্পাদনকে হ্রাস করে আপনি এটিকে 1 এ সেট করছেন?
শীদায়েই

3
@ শিডিই দেখুন নীচে মন্তব্য করতে পারেন :-) কারণ প্রতিটি saveক্রমের পরবর্তী মানের জন্য ডাটাবেসকে জিজ্ঞাসা করা দরকার।
জি ডেমেকি

আপনাকে ধন্যবাদ একই সমস্যা ছিল। প্রথমে আমি প্রতি @ সিক্যুইয়েন্স জেনারেটরে অ্যাটলিকেশন সাইজ = 1 যোগ করছিলাম। হাইবারনেট.আইডি.নেয়_জেনেরেটর_ম্যাপিংস ব্যবহার = এটি প্রতিরোধ করে। যদিও প্রতিটি সন্নিবেশের জন্য আইডি পাওয়ার জন্য জেপিএ এখনও ডাটাবেসটি জিজ্ঞাসা করে ...
TheBakker

1
সঙ্গে SequenceGeneratorহাইবারনেট শুধুমাত্র তথ্যভান্ডার অনুসন্ধান যখন ID- র পরিমাণ দ্বারা নির্দিষ্ট হবে allocationsizeরান আউট। যদি আপনি সেট আপ করেন allocationSize = 1তবে প্রতিটি কারণ সন্নিবেশের জন্য হাইবারনেট ডিবিকে জিজ্ঞাসা করার কারণ এটি। এই মানটি পরিবর্তন করুন এবং আপনার কাজ শেষ হয়েছে।
জি ডেমেকি

1
ধন্যবাদ! hibernate.id.new_generator_mappingsসেটিং সত্যিই গুরুত্বপূর্ণ। আমি আশা করব এটি ডিফল্ট সেটিংস যে আইডি নম্বরটি কেন বন্য হয় তার জন্য আমাকে এত বেশি সময় ব্যয় করতে হবে না।
লিওন - হ্যান লি

উত্তর:


43

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

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


ধন্যবাদ স্টিভ! সেরা উত্তর। এছাড়াও আপনার অন্যান্য পোস্ট সহায়ক ছিল।
জি ডেমেকি

4
আমি এটিও লক্ষ্য করেছি যে আপনি সহ-লেখক org.hibernate.id.enhanced.SequenceStyleGenerator। আপনি আমাকে অবাক করে দিয়েছিলেন।
জি ডেমেকি

22
আপনি অবাক হলেন কিভাবে? আমি হাইবারনেটের লিড ডেভেলপার। আমি অনেক হাইবারনেট ক্লাস লিখে / সহ-লিখেছি;)
স্টিভ এবারসোল

শুধু মাত্র নথির জন্য. বড় ফাঁক রোধ করতে ডিবি সিকোয়েন্স বৃদ্ধি বৃদ্ধি করা উচিত। ডিবি ক্রম allocationSize সাথে গুণ যখন আইডি ক্যাশে রান বিবরণ out.More stackoverflow.com/questions/5346147/...
Olcay Tarazan

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

17

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

সিকোয়েন্স আইডির পরবর্তী প্রজন্ম বরাদ্দ আকারের উপর ভিত্তি করে।

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

সুতরাং ব্যবহার করার allocationSize=1সময় আপনার সর্বদা ব্যবহার করা উচিত SequenceGenerator। অন্তর্নিহিত বেশিরভাগ ডাটাবেসের ক্রমটি সর্বদা বর্ধিত হয় 1


12
পারফরম্যান্স দিয়ে কিছু করার নেই? তুমি কি সত্যই নিশ্চিত? আমাকে শিখানো হয়েছে যে প্রতিটি allocationSize=1আইডিয়াসে হাইবারনেট সহ saveনতুন আইডি মান অর্জন করার জন্য ডাটাবেসে ভ্রমণের প্রয়োজন।
জি ডেমেকি

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

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

2
ঠিক আছে. সবই অ্যাপ্লিকেশন নির্দিষ্ট, তাই না! যদি আপনার অ্যাপ্লিকেশনটি কেবল পঠনযোগ্য অ্যাপ্লিকেশন হয় তবে বরাদ্দ আকার 1000 বা 1 ব্যবহারের প্রভাবটি একেবারে 0 0. অন্যদিকে এগুলির মতো জিনিসগুলি সর্বোত্তম অনুশীলন। আপনি যে সর্বোত্তম অনুশীলনগুলি সংগ্রহ করেন তা যদি আপনি সম্মান না করেন এবং সম্মিলিত প্রভাব আপনার আবেদনটি স্লো হয়ে যায়। অন্য একটি উদাহরণ হ'ল লেনদেন শুরু করা হবে যখন আপনার একেবারে প্রয়োজন হয় না।
হাসান সিলান

1

স্টিভ ইবারসোল এবং অন্যান্য সদস্যগণ,
আপনি কি কোনও আইডি যুক্তির কারণটি বৃহত্তর ফাঁক দিয়ে (ডিফল্ট 50 দ্বারা) ব্যাখ্যা করতে পারেন? আমি হাইবারনেট ৪.২.১৫ ব্যবহার করছি এবং নিম্নলিখিত কোডটি org.hibernate.id.enhanced.OptimizerFactory ক্যাশে পেয়েছি।

if ( lo > maxLo ) {
   lastSourceValue = callback.getNextValue();
   lo = lastSourceValue.eq( 0 ) ? 1 : 0;
   hi = lastSourceValue.copy().multiplyBy( maxLo+1 ); 
}  
value = hi.copy().add( lo++ );

যখনই এটি যদি বিবৃতিটির অভ্যন্তরে আঘাত করে তখন হাই মানটি আরও বড় হচ্ছে। সুতরাং, ঘন ঘন সার্ভার পুনঃসূচনার সাথে পরীক্ষার সময় আমার আইডি নিম্নলিখিত ক্রম আইডগুলি উত্পন্ন করে:
1, 2, 3, 4, 19, 250, 251, 252, 400, 550, 750, 751, 752, 850, 1100, 1150।

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

যে কারও ইনপুট অনেক সহায়ক হবে।

Jihwan

আপডেট: ne1410s: সম্পাদনার জন্য ধন্যবাদ।
সিফ্রিক: ঠিক আছে আমি এটা করবো. এটি এখানে আমার প্রথম পোস্ট এবং এটি কীভাবে ব্যবহার করবেন তা নিশ্চিত ছিল না।

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

উদাহরণস্বরূপ, সিকোয়েন্স আইডি এক পর্যায়ে 1 ছিল এবং হাইবারনেট 5, 6, 7, 8, 9 (বরাদ্দ আকার = 5 সহ) প্রবেশ করেছে। পরের বার, যখন আমরা পরবর্তী সিকোয়েন্স নম্বরটি পাই, তখন ডিবি 2 ফেরৎ দেয়, তবে হাইবারনেট 10, 11, 12 ব্যবহার করা প্রয়োজন ... সুতরাং, "হাই = সর্বশেষ সোর্সভ্যালু কোড" ()। গুণিতক (ম্যাকলো + 1) "হ'ল" ডিবি সিকোয়েন্স থেকে ফিরে আসা 2 থেকে পরবর্তী আইডি 10 পেতে ব্যবহৃত হত। মনে হয় কেবল বিরক্তিকর জিনিসটি ঘন ঘন সার্ভার পুনঃসূচনা করার সময় ছিল এবং এটি বৃহত্তর ব্যবধান নিয়ে আমার সমস্যা।

সুতরাং, আমরা যখন সিকিউএনসিআইডি আইডিটি ব্যবহার করি, সারণীতে সন্নিবেশ করা আইডি ডিবিতে থাকা সিকিউএনসিএইচ নম্বরটির সাথে মেলে না।


1

হাইবারনেট উত্স কোডটি খনন করার পরে এবং কনফিগারেশনের নীচে 50 টি সন্নিবেশের পরে পরবর্তী মানটির জন্য ওরাকল ডিবিতে যায়। সুতরাং প্রতিবার যখন বলা হবে তখন আপনার INST_PK_SEQ বৃদ্ধি 50 করুন।

হাইবারনেট 5 নীচের কৌশলগুলির জন্য ব্যবহৃত হয়

Http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#phanfiers- জেনারেটরস-সিকোয়েন্সের নীচেও দেখুন

@Id
@Column(name = "ID")
@GenericGenerator(name = "INST_PK_SEQ", 
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
        @org.hibernate.annotations.Parameter(
                name = "optimizer", value = "pooled-lo"),
        @org.hibernate.annotations.Parameter(
                name = "initial_value", value = "1"),
        @org.hibernate.annotations.Parameter(
                name = "increment_size", value = "50"),
        @org.hibernate.annotations.Parameter(
                name = SequenceStyleGenerator.SEQUENCE_PARAM, value = "INST_PK_SEQ"),
    }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "INST_PK_SEQ")
private Long id;

3
দুঃখিত, তবে এটি কোনও কিছু সেট আপ করার একটি অত্যন্ত ভার্জিক উপায়, যা পুরো হাইবারনেটের জন্য দুটি পরামিতি এবং সহজেই সমস্ত সত্তার জন্য প্রকাশ করা যেতে পারে।
জি ডেমেকি

সত্য তবে আমি যখন অন্য উপায়ে চেষ্টা করি তবে
সেগুলির কোনওটিই

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

1
ব্যাখ্যাটির জন্য ধন্যবাদ তবে আপনি যা লিখেছিলেন আমি চেষ্টা করেছি এবং এটি হাইবারনেট 5.0.7 এর সাথে কাজ করে নি। ফিনাল সংস্করণটি পরে আমি এই লক্ষ্যটি অর্জন করতে সক্ষম হতে সোর্স কোডটিতে খনন করেছি এবং এটিই আমি কার্যকর করতে পেরেছিলাম হাইবারনেট উত্স কোডে। খারাপ পারে কনফিগার কিন্তু যে দুর্ভাগ্যবশত API hibernates করা হয় এবং আমি হাইবারনেট এর স্ট্যান্ডার্ড EntityManager বাস্তবায়ন ব্যবহার করছি
Fatih tekin

1

হাইবারনেট 5 এ আমিও এই সমস্যার মুখোমুখি হয়েছি:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQUENCE)
@SequenceGenerator(name = SEQUENCE, sequenceName = SEQUENCE)
private Long titId;

নীচের মত একটি সতর্কতা পেয়েছেন:

অবচিত [org.hibernate.id.SequenceHiLoGenerator] সিক্যুয়েন্স-ভিত্তিক আইডি জেনারেটরের ব্যবহার খুঁজে পেয়েছি; পরিবর্তে org.hibernate.id.enhanced.SequenceStyleGenerator ব্যবহার করুন। বিশদ জানতে হাইবারনেট ডোমেন মডেল ম্যাপিং গাইড দেখুন।

তারপরে আমার কোডটি সিকোয়েন্স স্টাইলজিনেটরে পরিবর্তন করে:

@Id
@GenericGenerator(name="cmrSeq", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "SEQUENCE")}
)
@GeneratedValue(generator = "sequence_name")
private Long titId;

এটি আমার দুটি সমস্যা সমাধান করেছে:

  1. অবচয়জনক সতর্কতা স্থির করা হয়েছে
  2. ওরাকল ক্রম অনুসারে এখন আইডি উত্পন্ন হয় generated

0

আমি স্কিমা অনুসারে ডিডিএল পরীক্ষা করব check জেপিএ বাস্তবায়ন সঠিক বরাদ্দের আকারের সাথে ক্রমটি তৈরির জন্য দায়ী। অতএব, যদি বরাদ্দের আকার 50 হয় তবে আপনার সিকোয়েন্সের অবশ্যই তার ডিডিএলে 50 এর বর্ধন থাকতে হবে।

এই কেসটি সাধারণত বরাদ্দ আকার 1 এর সাথে ক্রম তৈরির পরে ঘটতে পারে পরে বরাদ্দ আকার 50 (বা ডিফল্ট) এ কনফিগার করা হয় তবে সিকোয়েন্স ডিডিএল আপডেট হয় না।


আপনি আমার বক্তব্য ভুল বুঝছেন। ALTER SEQUENCE ... INCREMENTY BY 50;কিছুই সমাধান করবে না, কারণ সমস্যা এখনও একই আছে। সিকোয়েন্স মানটি এখনও বাস্তব সত্ত্বার আইডিগুলিকে প্রতিফলিত করে না।
জি ডেমেকি

দয়া করে একটি পরীক্ষার কেসটি ভাগ করুন যাতে আমরা এখানে সমস্যাটি আরও ভালভাবে বুঝতে পারি।
হাসান সিলান

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

1
গ্রেগরি, আসলে আমি জানি যে আমি কী সম্পর্কে কথা বলছি, আমি বাটো জেপিএ লিখেছি যা বর্তমানে% 100 জেপিএ বাস্তবায়ন যা তার স্নিগ্ধতায় রয়েছে এবং গতির দিক দিয়ে হাইবারনেটকে পরাজিত করে - 15 গুণ দ্রুত। অন্যদিকে আমি আপনার প্রশ্নটি ভুল বুঝতে পেরেছিলাম এবং ভেবেও পাইনি যে হাইবারনেটটি সিকোয়েন্স সহ ব্যবহার করা যে কোনও সমস্যা তৈরি করা উচিত কারণ আমি ২০০৩ সাল থেকে অনেক ডাটাবেসের অনেক প্রকল্পে হাইবারনেট ব্যবহার করেছি। গুরুত্বপূর্ণ বিষয় আপনি প্রশ্নের সমাধান পেয়েছেন, দুঃখিত আমি উত্তর হিসাবে সঠিক হিসাবে চিহ্নিত হয়েছে ...
হাসান Ceylan

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