`

hibernate连载三:Annotation注解数据库ID生成策略

阅读更多
Hibernate的Annotation的主键ID生成策略有13种之多,这里介绍一种通杀的跨数据库平台的主键生成方式.
要想使用hibernate的Annotation注解需要下载hibernate-annotations-3.4.0.GA.zip解压把其中的
hibernate-annotation.jar
ejb3-persistence.jar
hibernate-commons-annotation.jar丢到项目中,其写Annotation注解比写xml很是方便很多,其极力推从使用Annotation注解.
package org.huawei.hibernate;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @作者: 何枫
 * @日期: 2011-4-2下午11:01:52
 * @版本: V 1.0
 * @标题: Teacher.java
 * @包名: org.huawei.hibernate
 * @描述: TODO(用一句话描述该文件做什么)
 */
@Entity
//@Entity 注解将一个类声明为实体 Bean
//@Table(name="_Teacher")======>数据库表别名
public class Teacher {
	private int id;

	private String name;

	private String title;
	
	private Date date;
	
	private zhicheng zhicheng;
        
	//一种可行性的跨数据库平台的数据库主键生成策略.(重点)
		 @TableGenerator(
				 name = "CardPkGen",  
			     table = "Teacher_GEN",  
			     pkColumnName = "pk_key",   
			     pkColumnValue = "pk_value",   
			     valueColumnName = "Teacher",   
			   	 allocationSize = 1  ) 
		 @Id  
		 @GeneratedValue(strategy=GenerationType.TABLE,generator="CardPkGen")  
		//@GeneratedValue(strategy=GenerationType.IDENTITY)
		/*
		 * @GeneratedValue:定义主键生成策略,这里因为使用的是TableGenerator,所以,主键的生成策略为GenerationType.TABLE,生成主键策略的名称则为前面定义的"CardPkGen”。
		 * @TableGenerator各属性含义如下:
		 * name:表示该表主键生成策略的名称,这个名字可以自定义,它被引用在@GeneratedValue中设置的"generator"值中
		 * table:表示表生成策略所持久化的表名,说简单点就是一个管理其它表主键的表,本例中,这个表名为ID_GEN
		 * pkColumnName:表生成器中的列名,用来存放其它表的主键键名,一般来说一个主键键名对应一张其他表要获取主键值对应的key。这个值要与数据库的列对应,比如GEN_NAME对应id_gen中的主键名称
		 * pkColumnValue:该实体所要访问对应主键生成表的主键的key值
		 * valueColumnName:表生成器所要对应pkColumnName主键的下一个值,这个值也要和表生成器中的列名对应
		 * allocationSize:表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50
		 */
 
	/*
	 * @GeneratedValue —— 注解声明了主键的生成策略。该注解有如下属性  
	 * strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO  
	 * GenerationType.AUTO 主键由程序控制  
	 * GenerationType.TABLE 使用一个特定的数据库表格来保存主键  
	 * GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)只用于mysql,Sqlserver  
	 * GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。(这个值要与generator一起使用)  
	 * generator 指定生成主键使用的生成器(可能是orcale中的序列)。 
	 */

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	//@Basic加不加都行
	//@Column=====>更改表字段名
	//不需要的字段不写到数据库用@Temporal
	//xml是的方式是不写
	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}
	
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	//时间精度注解
	//@Temporal(TemporalType.DATE)
	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}
	//Annotation处理枚举leix
	@Enumerated(EnumType.STRING)
	//@Enumerated(EnumType.ORDINAL)
	public zhicheng getZhicheng() {
		return zhicheng;
	}

	public void setZhicheng(zhicheng zhicheng) {
		this.zhicheng = zhicheng;
	}
}

0
0
分享到:
评论

相关推荐

    拦截器与冲突解决

    然而,在使用`<mvc:annotation-driven />`元素时,有时会出现与自定义拦截器的冲突问题。这个问题通常出现在当我们试图同时配置基于注解的控制器处理和自定义拦截器时,Spring可能无法正确地处理这些组件的执行顺序...

    Spring_Hibernate_JAVAX_Annotation注解

    ### Spring_Hibernate_JAVAX_Annotation 注解详解 #### 一、概述 本文将详细介绍与SSH(Spring+Struts+Hibernate)开发相关的注解。这些注解覆盖了多个领域,如AspectJ、Batch处理、Spring框架本身的功能(包括...

    SpringMVC源码总结(二)mvc:mvc:annotation-driven背后的那些事

    在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...

    hibernate _annotation 注解编程

    - **概述**:Hibernate 是一个流行的 Java 持久层框架,它提供了一种面向对象的方式来处理数据库操作。Hibernate 支持多种元数据定义方式,其中注解方式因其简洁易用而受到广泛欢迎。Hibernate 的注解支持主要通过 ...

    SpringMVC源码总结(三)mvc:annotation-driven和mvc:message-converters简单介绍

    在Spring MVC框架中,`mvc:annotation-driven`和`mvc:message-converters`是两个非常重要的元素,它们在处理基于注解的控制器和数据转换方面起着关键作用。本篇文章将深入探讨这两个组件的工作原理以及如何在实际...

    hibernate 注解 annotation 教程

    hibernate 注解 annotation 教程

    hibernate 中文文档 and _annotation.chm

    - @Id:标识类中的主键字段,可以配合@GeneratedValue指定主键生成策略。 - @GeneratedValue:定义主键的自增策略,如IDENTITY(数据库自动增长)、SEQUENCE(序列)等。 - @Column:定义属性对应表中的列,可以...

    JAVA 的ID生成策略

    JAVA ID生成策略是一种在Hibernate框架中使用的策略,用于生成实体类的主键值。这种策略在Annotation情况下,主要有三种方式生成主键值。 第一种方式是使用数据库的自动增长字段生成。这种方式使用@GeneratedValue...

    Hibernate Annotation 笔记 总结 注解

    【标签】:Hibernate, Annotation, 笔记, 总结, 注解 【正文】: Hibernate Annotation是Hibernate框架的一个重要特性,它允许开发者直接在Java类上使用注解来定义对象的数据库映射,从而避免了传统的XML配置文件...

    Hibernate distribution and annotation

    在这个压缩包中,我们有两个主要的部分:Hibernate 3.3.2和Hibernate Annotation 3.3.4。 **一、Hibernate 3.3.2** Hibernate 3.3.2是该框架的一个稳定版本,发布于2009年。这个版本包含了对JPA(Java Persistence ...

    HibernateAnnotation注解api

    HibernateAnnotation注解 api手册

    Java Annotation注解技术

    4. **代码生成**:一些工具(如Hibernate)会根据注解生成数据库映射或SQL语句。 5. **测试**:JUnit框架中的`@Test`注解标识测试方法。 ### 自定义注解 自定义注解需要定义一个新的注解类型,并可以包含自定义的...

    探索Java注解的神秘世界:Annotation全解析

    7. **持久化映射**:Hibernate 使用注解如 `@Entity` 和 `@Table` 来定义对象和数据库表之间的映射关系。 ### 总结 Java 注解是 Java 语言中非常强大的特性之一,它允许开发者以声明的方式为代码添加元数据,并在...

    hibernate-annotation

    3. 自动代码生成:IDE支持自动根据注解生成数据库表或更新已有表结构。 在实际项目中,结合Spring Boot和Hibernate注解,可以快速构建出高效的数据访问层。通过注解配置,可以轻松实现CRUD操作,并进行复杂的查询。...

    hibernate annotation hibernate3

    `@Id`注解用于指定实体类中的主键字段,它通常与`@GeneratedValue`一起使用,表示主键自动生成。例如: ```java @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; ``` 三、字段级注解 1....

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    - `@GeneratedValue`:定义主键生成策略,如AUTO、IDENTITY、SEQUENCE等。 2. **属性注解**: - `@Column`:用于指定实体类属性与数据库表列的映射,可以设置长度、是否可空、默认值等属性。 - `@Temporal`:...

    (代码)SpringMVC第12讲:<mvc:annotation-driven/>

    首先,`&lt;mvc:annotation-driven/&gt;`的作用是自动配置Spring MVC,启用对处理方法注解的支持,如`@RequestMapping`、`@RequestParam`、`@ModelAttribute`等。通过这个元素,我们可以避免编写大量的XML配置,转而采用...

    hibernate-annotation-helloword

    总结来说,**hibernate-annotation-helloworld**项目是一个基础的教程,帮助开发者快速理解并开始使用Hibernate的注解方式来处理数据库操作。通过这个示例,你可以学到如何创建实体类、设置注解、配置数据库连接以及...

    hibernate-Annotation.jar

    在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...

Global site tag (gtag.js) - Google Analytics