Com MentaBean você pode criar uma tabela no banco de dados através dos métodos session.createTable(bean) ou session.createTables(). Dependendo do dialeto usado, a SQL apropriada para criação de tabelas (create table) será gerada e executada. Veja alguns exemplos abaixo:
BeanConfig config = new BeanConfig(User.class, "Users"); config.pk("id", DBTypes.AUTOINCREMENT); config.field("username", DBTypes.STRING); config.field("birthdate", "bd", DBTypes.DATE); // repare que o nome da coluna é diferente config.field("status", new EnumIdType(Status.class)); config.field("deleted", DBTypes.BOOLEANINT); config.field("insertTime", "insert_time", DBTypes.NOW_ON_INSERT_TIMESTAMP); config.field("updateTime", "update_time", DBTypes.NOW_ON_UPDATE_TIMESTAMP); // (...) BeanSession session = new H2BeanSession(beanManager, conn); session.createTable(User.class);
create table Users (
id integer AUTO_INCREMENT NOT NULL,
username varchar(200),
bd date,
status smallint NOT NULL,
deleted smallint,
insert_time timestamp,
update_time timestamp
);
alter table Users add primary key (id);
Para colunas que suportam tamanhos definidos, é possível informá-los no mapeamento. Você também pode especificar se a coluna pode ser nula ou não. Por exemplo, queremos limitar a coluna username para 50 caracteres e nós não queremos permitir que ela contenha valores nulos. Podemos fazer o seguinte:
BeanConfig config = new BeanConfig(User.class, "Users"); config.pk("id", DBTypes.AUTOINCREMENT); config.field("username", DBTypes.STRING.size(50).nullable(false)); config.field("birthdate", "bd", DBTypes.DATE); // note que o nome da coluna é diferente config.field("status", new EnumIdType(Status.class)); config.field("deleted", DBTypes.BOOLEANINT); config.field("insertTime", "insert_time", DBTypes.NOW_ON_INSERT_TIMESTAMP); config.field("updateTime", "update_time", DBTypes.NOW_ON_UPDATE_TIMESTAMP); // (...) BeanSession session = new H2BeanSession(beanManager, conn); session.createTable(User.class);
create table Users (
id integer AUTO_INCREMENT NOT NULL,
username varchar(50) NOT NULL,
bd date,
status smallint NOT NULL,
deleted smallint,
insert_time timestamp,
update_time timestamp
);
alter table Users add primary key (id);
NOTA: MentaBean também suporta criação de tabelas com chave primária composta. Se mais de uma propriedade foi definida no config como chave primária (pk composta), elas serão incluídas no SQL acima que cria a PK.