我们在开发的时候有的时候可能想在创建数据库的实体文件后立即创建数据库表, 已核验实体文件的正确性, 以往可能需要重启项目,并且项目中需要要必要的配置,比较麻烦,并且比较费时,其实可以通过简单的配置即可立即生成数据库表;
样例文件
package secfox.soc.emergency.domain; import java.util.Date; import secfox.soc.melon.persistence.BaseDomain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; @Entity @Table(name="T_EMERGENCY") @NamedQueries({ //获取所有的数据 @NamedQuery(name="emergency.findAll", query="select a from Emergency a "), }) public class Emergency extends BaseDomain<Long>{ @Id @Column(name="PK") @GeneratedValue(generator="GEN_SEQ_ALARM") private Long id; //报告人 @Column(name="REPORTER") private String reporter; //联系电话 @Column(name="PHONE") private String phone; //传真 @Column(name="FAX") private String fax; //电子邮件 @Column(name="EMAIL") private String email; //通讯地址 @Column(name="ADDRESS") private String address; //应急相应名称 @Column(name="NAME") private String name; //发生时间 @Column(name="OCCTIME") private Date occtime; //发现时间 @Column(name="FINDTIME") private Date findtime; //信息系统说明 @Column(name="INSTRUCTION") private String instruction; //信息系统负责部门 @Column(name="DEPARTMENT") private String department; //信息系统负责人 @Column(name="MANAGER") private String manager; //信息安全事件描述 @Column(name="DESCRIBtion") private String describtion; //信息安全事件类型 @Column(name="TYPE") private String type; //信息安全事件级别 @Column(name="LEVEL") private String level; //初步原因判断 @Column(name="REASON") private String reason; //影响范围和严重程度 @Column(name="EFFECTRANGE") private String effectrange; //受影响资产 @Column(name="EFFECTPROPERTY") private String effectproperty; //已采取措施 @Column(name="STEP") private String step; //计划采取措施 @Column(name="PLANSTEP") private String planstep; //领导小组意见 @Column(name="LEADOPTION") private String leadoption; //总局应急意见 @Column(name="HEADOPTION") private String headoption; //省局应急办意见 @Column(name="SHENGOPTION") private String shengoption; //信息安全主管意见 @Column(name="MANAGEOPTION") private String manageoption; //信息状态 @Column(name="STATE") private String state; //工作流id @Column(name="WORKFLOWID") private String workflowid; @ManyToOne(targetEntity = PlanEmergency.class, fetch = FetchType.EAGER, optional = true) @JoinColumn(name = "FK_PLAN", nullable = true, unique = false) private PlanEmergency planEmergency; public String getWorkflowid() { return workflowid; } public void setWorkflowid(String workflowid) { this.workflowid = workflowid; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getReporter() { return reporter; } public void setReporter(String reporter) { this.reporter = reporter; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getFax() { return fax; } public void setFax(String fax) { this.fax = fax; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getOcctime() { return occtime; } public void setOcctime(Date occtime) { this.occtime = occtime; } public Date getFindtime() { return findtime; } public void setFindtime(Date findtime) { this.findtime = findtime; } public String getInstruction() { return instruction; } public void setInstruction(String instruction) { this.instruction = instruction; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getManager() { return manager; } public void setManager(String manager) { this.manager = manager; } public String getDescribtion() { return describtion; } public void setDescribtion(String describtion) { this.describtion = describtion; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public String getEffectrange() { return effectrange; } public void setEffectrange(String effectrange) { this.effectrange = effectrange; } public String getEffectproperty() { return effectproperty; } public void setEffectproperty(String effectproperty) { this.effectproperty = effectproperty; } public String getStep() { return step; } public void setStep(String step) { this.step = step; } public String getPlanstep() { return planstep; } public void setPlanstep(String planstep) { this.planstep = planstep; } public String getLeadoption() { return leadoption; } public void setLeadoption(String leadoption) { this.leadoption = leadoption; } public String getHeadoption() { return headoption; } public void setHeadoption(String headoption) { this.headoption = headoption; } public String getShengoption() { return shengoption; } public void setShengoption(String shengoption) { this.shengoption = shengoption; } public String getManageoption() { return manageoption; } public void setManageoption(String manageoption) { this.manageoption = manageoption; } public PlanEmergency getPlanEmergency() { return planEmergency; } public void setPlanEmergency(PlanEmergency planEmergency) { this.planEmergency = planEmergency; } public Long getId() { System.out.println("得到id值:"+id); return id; } public void setId(Long id) { this.id=id; } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return false; } @Override public int hashCode() { // TODO Auto-generated method stub return 0; } @Override public String toString() { // TODO Auto-generated method stub return "Emergency [id="+id+",reporter="+reporter+"]"; } }
配置hibernate配置文件
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- ?useUnicode=true&characterEncoding=UTF-8设置数据库编码,mysql安装时默认为Latin1 --> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://10.70.177.158:3306/ums</property> <property name="connection.username">soc</property> <property name="connection.password">soc</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hbm2ddl.auto">update</property> <!--是否在控制台显示SQL语句,开发阶段开启,便于调试--> <property name="show_sql">true</property> <!--是否在控制台格式化显示SQL语句,方便查看--> <property name="format_sql">true</property> <!-- <property name="cache.use_second_level_cache">true</property> <property name="cache.use_query_cache">true</property> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> --> <mapping class="secfox.soc.emergency.domain.Emergency" /> <mapping class="secfox.soc.emergency.domain.EmergencyApproval" /> <mapping class="secfox.soc.emergency.domain.EmergencyDispose" /> <mapping class="secfox.soc.emergency.domain.PlanEmergency" /> </session-factory> </hibernate-configuration>
对应java执行程序
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class HibernateAnnotationTest {
public static void main(String[] args) {
Configuration cfg = new AnnotationConfiguration().configure("/me/hibernate.cfg.xml");
cfg.buildSessionFactory();
}
}
其实只需要这么简单的配置即可实现,不妨可以试验下!