Yes — Hibernate (and JPA) support annotations as a modern alternative to XML mapping files. You can map your entities, primary keys, relationships, and other metadata directly in your Java classes using standard JPA or Hibernate-specific annotations.
🔹 Key annotations you use instead of XML:
@Entity
— marks the class as a persistent entity.@Table
— specifies the table name (optional if same as class).@Id
— defines the primary key field.@GeneratedValue
— configures how the primary key is generated.@Column
— customizes column details.@OneToOne
,@OneToMany
,@ManyToOne
,@ManyToMany
— define relationships.@Embedded
,@Embeddable
— map embedded value types.
🔹 Example with annotations instead of XML mapping:
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Column(name = "email")
private String email;
// getters and setters
}
✅ Here, there’s no need for User.hbm.xml
— everything is defined directly in the Java class.
🔹 How is this better than XML?
✅ Easier to read: mapping information sits right next to the fields it describes.
✅ Easier to maintain: fewer separate files to manage.
✅ Type-safe: Java compiler checks your class names and field names.
✅ Less risk of mismatches between Java code and XML mappings.
🔹 What about Hibernate configuration itself?
- While you still need some global configuration (database connection, dialect), you can use
application.properties
(in Spring Boot) orhibernate.cfg.xml
just for settings, but the entity mappings themselves don’t need XML anymore.
✅ Key takeaway:
Yes — you can fully map your entities with annotations instead of XML, and this is the recommended, modern approach for Hibernate/JPA projects.