🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
我们在前面只声明了一个主键。下面,我们共同使用注解的方式来补充其它信息。 ``` package entity; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Entity; import javax.persistence.Id; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Index; // 声明主体 @Entity public class Teacher { // 声明主键 @Id // 声明一个名为idGenerator的native类型构造器 // 使用这个构造器设置ID为自增属性 @GenericGenerator(name="idGenerator", strategy="native") @GeneratedValue(generator="idGenerator") private int id; // 主键 private String name; // 姓名 // 声明长度(用户名不超过20位长度,定长能够提升效率) @Column(columnDefinition="char(20)") // 声明为索引(该字段将来用于查询 ,增加索引将大幅提升查询效率) @Index(name="username") private String username; // 用户名 private String email; // 邮箱 private Boolean sex = false; // 性别 0:男;1:女 // 密码采用sha1 md5加密,长度固定。 @Column(columnDefinition="char(40)") private String password; // 密码 public int getId() { ``` # 测试 修改注解后,当hbm2ddl.auto值设置为update时,并不会为我们重新生成数据表。在测试前,我们需要使用navicat手动将数据表teacher删除。然后再执行单元测试。 执行单元测试: ``` package hibernate; import java.util.Properties; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; public class TableTest { @Test public void createTable() { // 实例化并加载数据库配置文件 Configuration configuration = new Configuration().configure(); // 构造服务注册对象 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder(). applySettings(configuration.getProperties()). buildServiceRegistry(); // 创建会话工厂(session factory)) SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry); // 创建会话(这里的session也是会话的意思,我们以前接触的http中的session,处理的是用户与服务器的对话) Session session = sessionFactory.getCurrentSession(); // 开启事务(使用缓冲池进行数据库的连接) session.beginTransaction(); // 关闭session session.close(); } } ``` 查看表结构 : ![](https://box.kancloud.cn/4f6f82e54829f0463f15d60da18c8d64_675x230.png) 查看索引: ![](https://box.kancloud.cn/3a6b33d19a6e32f347624ae4ee5e2cee_655x120.png)