利用@annotation生成持久化层,可以直接由类生成表
利用@annotation生成持久化层,可以直接由类生成表
啥也不说了,直接上两个例子,里面有外键关联,有字符串类型,int类型,布尔类型。注意类名上面的?@Entity 注记一定要有
?
?
package com.mycom.entity;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;/** * 角色表 * */@SuppressWarnings("serial")@Entity@Table(name = "Role")public class Role implements Serializable{private Integer id;//角色id,自增private String name;//角色名称,长度20public Role() {super();}public Role(String name) {super();this.name = name;}@Id@GeneratedValue@Column(name = "id")public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(name = "name", unique = true, length = 20)public String getName() {return name;}public void setName(String name) {this.name = name;}}?
在用户表中,有一个外键关联到角色表,这个比较关键,其他都很简单
?
package com.mycom.entity;import java.io.Serializable;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.Table;/** * 用户表 * * @author Kingt.W * */@SuppressWarnings("serial")@Entity@Table(name = "User")public class User implements Serializable {/** * 用户id,自动生成 */private Integer id;/** * 用户名,长度20.如果该用户为教师,则直接用教师的工号作为用户名 */private String username;/** * 密码,长度32 */private String password;/** * 该用户的角色 */private Role role;/** * 该用户账号是否可用 */private boolean isActive;public User() {super();}/** * 获取用户的id * * @return - 用户的id */@Id@GeneratedValue@Column(name = "id", unique = true, nullable = false)public Integer getId() {return id;}/** * 设置用户的id * * @param id * - 用户id */public void setId(Integer id) {this.id = id;}/** * 获取用户名 * * @return - 用户名 */@Column(name = "username", unique = true, length = 20)public String getUsername() {return username;}/** * 设置用户名,如果该用户为教师,则直接用教师的工号作为用户名 * * @param username * - 用户名 */public void setUsername(String username) {this.username = username;}/** * 获取用户的密码 * * @return - 用户的密码 */@Column(name = "password", length = 32, nullable = false)public String getPassword() {return password;}/** * 设置用户的密码 * * @param password * - 密码 */public void setPassword(String password) {this.password = password;}/** * 获取该用户的角色 * * @return - 该用户的角色 */@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "idRole")public Role getRole() {return role;}/** * 设置该用户的角色 * * @param role * - 角色 */public void setRole(Role role) {this.role = role;}/** * 获取该用户账号状态:是否可用 * @return - true则可用;false则不可用 */@Column(name = "isActive")public boolean isActive() {return isActive;}/** * 设置该用户账号状态:是否可用 * @param isActive - 账号状态:true则可用;false则不可用 */public void setActive(boolean isActive) {this.isActive = isActive;}}?
?
至于如何由类生成表,可以在Hibernate的配置文件里面加上这条语句,详细的Hibernate配置可以查看笔者的令一篇文章http://titanseason.iteye.com/admin/blogs/1279187
?
<!-- 启动服务器时,自动更新数据库.开发结束以后,删掉下面这行--><property name="hibernate.hbm2ddl.auto">update</property>