Define once, deploy everywhere. MetaObjects revolutionizes enterprise software development with metadata-driven architecture that works across all programming languages.
Built by Doug Mealing, who has spent 25 years solving enterprise integration challenges at Fortune 500 companies. This isn't academic theory—it's battle-tested in production environments handling pharmaceutical compliance, educational content management, and financial messaging systems.
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeGroupId=com.draagon.metaobjects -DarchetypeArtifactId=metaobjects-archetype
{
"object": {
"name": "Customer",
"type": "pojo",
"children": [
{
"field": {
"name": "id",
"type": "long",
"validation": ["required"]
}
},
{
"field": {
"name": "email",
"type": "string",
"validation": ["required", "email"],
"pii": true
}
},
{
"field": {
"name": "profile",
"type": "object",
"objectRef": "CustomerProfile"
}
}
]
}
}
@Entity
@Table(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Email
@Column(name = "email")
private String email;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "profile_id")
private CustomerProfile profile;
// Generated getters, setters, validation
}
export interface Customer {
id: number;
email: string;
profile: CustomerProfile;
}
export const CustomerValidator = {
validate(customer: Customer): ValidationResult {
const errors: string[] = [];
if (!customer.id) errors.push('ID is required');
if (!customer.email) errors.push('Email is required');
if (!isValidEmail(customer.email)) {
errors.push('Invalid email format');
}
return { valid: errors.length === 0, errors };
}
};
Single metadata definition generates implementations across Java, C#, TypeScript, Python, and more with perfect consistency across your entire technology stack.
Define once, deploy everywhere. Create a single metadata definition that automatically generates consistent implementations across all programming languages in your stack.
Modify your system behavior, add fields, and update business rules without rebuilding or redeploying services. Zero downtime for metadata-driven changes.
Advanced code generators create production-ready implementations with validation, serialization, and documentation. Maven plugin integration makes it seamless.
Enterprise governance isn't an afterthought - it's built into the core architecture with compliance, security, and audit capabilities from day one.
Define validation rules once and have them enforced consistently across all services and languages. Same rules in frontend and backend.
Layer additional metadata for specific contexts without changing base definitions. Extend without modifying core schemas.
MetaObjects has been running in production for 20+ years at pharmaceutical, education, and financial companies. Handle FDA compliance changes, educational content, and secure messaging - all metadata-driven.
From zero to running MetaObjects application in three simple steps
<dependency>
<groupId>com.draagon.metaobjects</groupId>
<artifactId>metaobjects-core</artifactId>
<version>5.1.0</version>
</dependency>
{
"object": {
"name": "Product",
"type": "pojo",
"children": [
{"field": {"name": "id", "type": "long"}},
{"field": {"name": "name", "type": "string"}},
{"field": {"name": "price", "type": "double"}}
]
}
}
mvn metaobjects:generate
MetaObject productMeta = loader.getMetaObject("Product");
Object product = productMeta.newInstance();
productMeta.setFieldValue(product, "name", "Widget");
productMeta.setFieldValue(product, "price", 29.99);
Join thousands of developers building better enterprise applications with MetaObjects
Explore the source code, contribute to development, and report issues on our active GitHub repository.
View on GitHubJoin our Discord server to chat with other developers, get help, and stay updated on the latest news.
Join DiscordGet answers to your MetaObjects questions from the community using the 'metaobjects' tag.
Ask QuestionJoin the open source community and see how MetaObjects can streamline your enterprise development process