
Play Store Application link β Hibernate – in 10 steps – Apps on Google Play
Hibernate object states-

State | Definition | Example | Code Snippet |
---|---|---|---|
Transient | A transient object is an object that is not associated with a Hibernate session and has no representation in the database. | A new instance of an entity class that has not been saved to the database yet | Person p = new Person(); |
Persistent | A persistent object is an object that is associated with a Hibernate session and has a representation in the database. Either saved in database [using save, saveOrUpdate, persist, merge etc method] or retrieved from the database [using get, load etc method] | An instance of an entity class that has been retrieved from the database using a Hibernate session | Person p = session.get(Person.class, 1); |
Detached | When the session was closed, the state changes to detached. or evict() , clear() etc methods are applied, The object is detached from its session. | An instance of an entity class that was retrieved from the database using a Hibernate session, but the session has been closed | Person p = session.get(Person.class, 1); <br> session.close(); <br> p.setName("John Doe"); |
Generators –
Hibernate XML vs. Annotation-Based Generators β Common Strategies
Strategy | XML (generator class) | Annotation (@GeneratedValue ) | Usage (What it Does?) | Example in XML | Example in Annotation |
---|---|---|---|---|---|
Auto | <generator class="native"/> | GenerationType.AUTO | Hibernate automatically selects the best strategy based on the database. | <id name="id"><generator class="native"/></id> | @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; |
Identity | <generator class="identity"/> | GenerationType.IDENTITY | Uses database’s auto-increment feature (MySQL, SQL Server). The database generates the primary key. | <id name="id"><generator class="identity"/></id> | @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; |
Sequence | <generator class="sequence"/> | GenerationType.SEQUENCE | Uses a database sequence to generate unique IDs (Recommended for PostgreSQL, Oracle). | <id name="id"><generator class="sequence"/><param name="sequence">my_seq</param></id> | @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="my_seq") @SequenceGenerator(name="my_seq", sequenceName="my_seq") private Long id; |
Table | <generator class="table"/> | GenerationType.TABLE | Uses a separate table to store and generate unique IDs (Slower but database-independent). | <id name="id"><generator class="table"/></id> | @Id @GeneratedValue(strategy = GenerationType.TABLE) private Long id; |
Assigned | (Default, No Generator Needed) | No @GeneratedValue used | Manually set the ID. Hibernate does not generate it. | <id name="id" type="long"/> (No generator) | @Id private Long id; (No @GeneratedValue ) |