利用@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>
分享到:
相关推荐
自定义注解允许开发者创建自己的标记来满足特定需求,比如代码生成、验证、持久化等。本文将深入探讨自定义注解的创建、使用及其在实际开发中的应用。 ### 1. 自定义注解的定义 自定义注解的定义以`@interface`...
通过自定义和标准Annotation的结合,开发者可以实现更高级的功能,如代码的自我验证、性能优化和自动化生成。随着Java版本的升级,Annotation的应用场景和能力也在不断扩大,成为了现代Java开发不可或缺的一部分。
在Java开发中,数据传输对象(DTO)和持久化对象(POJO)是常见的概念,它们用于在不同层之间传递数据。手动创建这些类可能会耗费大量时间,特别是在处理大量数据库表时。因此,"eclipse插件,根据数据库表自动生成...
5. **持久化更新**:如果你的处理器需要在不同编译周期之间保持状态,可以使用`ProcessingEnvironment`中的`Options`来存储信息。这在处理复杂的元数据模型时非常有用。 6. **测试与使用**:为了确保处理器正确工作...
4. 文档生成:Javadoc可以读取Annotation生成更详细的文档。 总结,Java Annotation提供了一种强大的元数据机制,使开发者能够在代码中嵌入额外的信息,这些信息可以被各种工具用来优化开发流程、增强代码质量。...
Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种更加内聚和直接的方式,使得...
注解不会直接影响代码的执行,但它们可以被编译器或运行时环境用来验证代码、生成代码、配置应用等。在本主题中,我们将深入探讨`annotation`相关的知识点。 首先,我们来看`MyAnnotation.java`。这是用户自定义...
Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问细节。在Hibernate 3.3版本中,引入了Annotation API,这是一种更加直观、简洁的方式来声明对象-...
- 数据持久化:JPA中的`@Entity`、`@Table`、`@Column`等注解用于将Java对象映射到数据库表。 7. **最佳实践** - 适当使用注解:注解应用于增加清晰度和简化代码,而不是为了使用而使用。 - 避免过度依赖:虽然...
Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的交互,而注解是Hibernate实现ORM的一种方式,通过在Java类和属性上添加特定的注解,可以将数据模型自动映射到数据库表。 1. **注解基础**...
`map-annotation`包提供了一系列自定义注解,用于标记实体类中的属性,以便自动完成诸如字段映射、验证、持久化等操作。这些注解通常会附带一些属性,允许开发者进行更细粒度的控制。 例如,一个常见的注解可能是`@...
《Hibernate-Annotation-3.4.0帮助文档》是一份详尽的指南,旨在帮助开发者理解和使用Hibernate ORM框架中的注解功能。Hibernate是Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作。在3.4.0...
在实际开发中,注解与反射相结合,可以实现动态配置、AOP(面向切面编程)、持久化框架等多个领域的重要功能。例如,Spring AOP通过分析`@Aspect`注解定义的切面,实现横切关注点的自动化处理。 总之,Java注解是...
通过注解,可以在实体类和属性上直接定义数据库映射,如@Entity表示一个数据库表,@Table指定表名,@Id标识主键,@GeneratedValue生成主键值等。 4. **实体类与数据库表映射**: 使用注解,可以轻松地将Java类映射到...
`@Entity` 是用于标记一个Java类作为持久化实体类的关键注解,表示这个类可以直接映射到数据库表中。例如: ```java @Entity public class Flight implements Serializable { // ... } ``` #### 2. `@Column` ...
在 Hibernate 中,实体类可以通过注解进行配置,如 `@Entity` 表示该类对应数据库中的表,`@Table` 定义表名,`@Id` 定义主键,`@GeneratedValue` 用于自动生成主键值。另外,`@Column`、`@ManyToOne`、`@OneToMany`...