利用@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;//角色名称,长度20
public 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>