/
Hibernate Examples

Hibernate Examples

OpenMRS currently uses Hibernate to connect the OpenMRS objects to the relational database tables.

You can see the hibernate mapping files in [source:openmrs/trunk/metadata/api/hibernate].

Modules must add hibernate.hbm.xml files to their /metadata file AND reference them in their config.xml files in the <mappingFiles> element.

[edit]

Example Java Object

 

package org.openmrs; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.Locale; /** * ConceptName is the real world term used to express a Concept within the idiom of a particular * locale. */ public class ConceptName extends BaseOpenmrsObject implements Auditable { // Fields private Integer conceptNameId; private Concept concept; private String name; private Locale locale; private Collection<ConceptNameTag> tags; // Constructors /** default constructor */ public ConceptName() { } /** * Convenience constructor to create a ConceptName object by primary key * * @param conceptNameId */ public ConceptName(Integer conceptNameId) { this.conceptNameId = conceptNameId; } /** * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (!(obj instanceof ConceptName)) { return false; } ConceptName rhs = (ConceptName) obj; if (this.conceptNameId != null && rhs.conceptNameId != null) return (this.conceptNameId.equals(rhs.conceptNameId)); else return this == obj; } /** * @see java.lang.Object#hashCode() */ public int hashCode() { if (this.getConceptNameId() == null) return super.hashCode(); int hash = 3; hash = hash + 31 * this.getConceptNameId(); return hash; } public Integer getConceptNameId() { return conceptNameId; } public void setConceptNameId(Integer conceptNameId) { this.conceptNameId = conceptNameId; } public Concept getConcept() { return concept; } public void setConcept(Concept concept) { this.concept = concept; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Locale getLocale() { return locale; } public void setLocale(Locale locale) { this.locale = locale; } public Collection<ConceptNameTag> getTags() { return tags; } public void setTags(Collection<ConceptNameTag> tags) { this.tags = tags; } }

 

[edit]

Hibernate Mapping File

This mapping file works with the above concept.

Some attributes defined here (like uuid, creator, voided, etc.) are defined on the parent class of ConceptName.

<generator />can also be the custom openmrs<generator />

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.1//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="org.openmrs"> <class name="ConceptName" table="concept_name"> <id name="conceptNameId" type="int" column="concept_name_id"> <generator /> </id> <many-to-one name="concept" column="concept_id" class="Concept" not-null="true"/> <property name="name" type="java.lang.String" length="65535" not-null="true" /> <property name="locale" type="java.util.Locale" length="50" not-null="true"/> <property name="dateCreated" type="java.util.Date" column="date_created" not-null="true"/> <many-to-one name="creator" column="creator" not-null="true"/> <property name="voided" type="java.lang.Boolean" column="voided" length="1" not-null="true" /> <property name="dateVoided" type="java.util.Date" column="date_voided" length="19" /> <property name="voidReason" type="java.lang.String" column="void_reason" length="255" /> <many-to-one name="voidedBy" column="voided_by" /> <set name="tags" table="concept_name_tag_map" cascade="save-update"> <key column="concept_name_id"/> <many-to-many column="concept_name_tag_id"/> </set> <property name="uuid" type="java.lang.String" column="uuid" length="38" unique="true" /> </class> </hibernate-mapping>

 

Related content

Create and Deploy Your First OpenMRS Module
Create and Deploy Your First OpenMRS Module
Read with this
Module Hibernate Mapping Files
Module Hibernate Mapping Files
More like this
Getting Started as a Developer
Getting Started as a Developer
Read with this
Standard and Non-standard Terminology Mapping
Standard and Non-standard Terminology Mapping
More like this
Decision Making Playbook
Decision Making Playbook
Read with this
Module Conventions
Module Conventions
More like this