`
titanseason
  • 浏览: 181973 次
社区版块
存档分类
最新评论

利用@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;//角色名称,长度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
1
分享到:
评论

相关推荐

    自定义注解annotation及用法

    自定义注解允许开发者创建自己的标记来满足特定需求,比如代码生成、验证、持久化等。本文将深入探讨自定义注解的创建、使用及其在实际开发中的应用。 ### 1. 自定义注解的定义 自定义注解的定义以`@interface`...

    Annotation手册

    通过自定义和标准Annotation的结合,开发者可以实现更高级的功能,如代码的自我验证、性能优化和自动化生成。随着Java版本的升级,Annotation的应用场景和能力也在不断扩大,成为了现代Java开发不可或缺的一部分。

    eclipse插件,根据数据库表自动生成DTO(pojo)插件

    在Java开发中,数据传输对象(DTO)和持久化对象(POJO)是常见的概念,它们用于在不同层之间传递数据。手动创建这些类可能会耗费大量时间,特别是在处理大量数据库表时。因此,"eclipse插件,根据数据库表自动生成...

    annotationProcessor实例demo

    5. **持久化更新**:如果你的处理器需要在不同编译周期之间保持状态,可以使用`ProcessingEnvironment`中的`Options`来存储信息。这在处理复杂的元数据模型时非常有用。 6. **测试与使用**:为了确保处理器正确工作...

    JavaAnnotation手册.pdf

    4. 文档生成:Javadoc可以读取Annotation生成更详细的文档。 总结,Java Annotation提供了一种强大的元数据机制,使开发者能够在代码中嵌入额外的信息,这些信息可以被各种工具用来优化开发流程、增强代码质量。...

    Hibernate Annotation 中文文档

    Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种更加内聚和直接的方式,使得...

    annotation

    注解不会直接影响代码的执行,但它们可以被编译器或运行时环境用来验证代码、生成代码、配置应用等。在本主题中,我们将深入探讨`annotation`相关的知识点。 首先,我们来看`MyAnnotation.java`。这是用户自定义...

    hibernate annotation api chm文件

    Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问细节。在Hibernate 3.3版本中,引入了Annotation API,这是一种更加直观、简洁的方式来声明对象-...

    Annotation--学习:JDK内建Annotation

    - 数据持久化:JPA中的`@Entity`、`@Table`、`@Column`等注解用于将Java对象映射到数据库表。 7. **最佳实践** - 适当使用注解:注解应用于增加清晰度和简化代码,而不是为了使用而使用。 - 避免过度依赖:虽然...

    hibernate annotation 中文文档

    Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的交互,而注解是Hibernate实现ORM的一种方式,通过在Java类和属性上添加特定的注解,可以将数据模型自动映射到数据库表。 1. **注解基础**...

    map-annotation

    `map-annotation`包提供了一系列自定义注解,用于标记实体类中的属性,以便自动完成诸如字段映射、验证、持久化等操作。这些注解通常会附带一些属性,允许开发者进行更细粒度的控制。 例如,一个常见的注解可能是`@...

    Hibernate-Annotation-3.4.0帮助文档

    《Hibernate-Annotation-3.4.0帮助文档》是一份详尽的指南,旨在帮助开发者理解和使用Hibernate ORM框架中的注解功能。Hibernate是Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作。在3.4.0...

    java之Annotation及其应用

    在实际开发中,注解与反射相结合,可以实现动态配置、AOP(面向切面编程)、持久化框架等多个领域的重要功能。例如,Spring AOP通过分析`@Aspect`注解定义的切面,实现横切关注点的自动化处理。 总之,Java注解是...

    hibernate-annotation 所需要的jar包

    通过注解,可以在实体类和属性上直接定义数据库映射,如@Entity表示一个数据库表,@Table指定表名,@Id标识主键,@GeneratedValue生成主键值等。 4. **实体类与数据库表映射**: 使用注解,可以轻松地将Java类映射到...

    HibernateAnnotation

    `@Entity` 是用于标记一个Java类作为持久化实体类的关键注解,表示这个类可以直接映射到数据库表中。例如: ```java @Entity public class Flight implements Serializable { // ... } ``` #### 2. `@Column` ...

    sping hibernate Annotation(注释配置) demo(例子)

    在 Hibernate 中,实体类可以通过注解进行配置,如 `@Entity` 表示该类对应数据库中的表,`@Table` 定义表名,`@Id` 定义主键,`@GeneratedValue` 用于自动生成主键值。另外,`@Column`、`@ManyToOne`、`@OneToMany`...

Global site tag (gtag.js) - Google Analytics