`
keren
  • 浏览: 1573887 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate Anotation使用

阅读更多
http://shiwj1010.iteye.com/blog/385405
http://www.iteye.com/topic/95822
http://www.iteye.com/topic/76359
http://java.chinaitlab.com/Hibernate/763968.html
基于按annotation的hibernate主键生成策略之一
http://hi.baidu.com/babala_234/blog/item/8aae7445e30e933686947359.html
基于按annotation的hibernate主键生成策略之二
http://hi.baidu.com/babala_234/blog/item/84b25809c6e5b12d6a60fb5a.html
http://hi.baidu.com/%E7%F9%BB%C3%CE%E7%D2%B9/blog/item/4b24412c78bf093d359bf779.html
id生成策略:TABLE SEQUENCE ASSIGN UUID AUTO
@Id
 @TableGenerator(
      name="ID_GENERATOR",
      table="ID_GEN",
      pkColumnName = "GEN_NAME",
      pkColumnValue = "NBR_PK",
      valueColumnName = "GEN_VALUE",
      initialValue = 1,
      allocationSize = 1
  )
  @GeneratedValue(strategy=GenerationType.TABLE, generator="ID_GENERATOR")
  @Column(name="NBR", length=10)
  private Long nbr=0L; 


JPA 会执行这样的语句:

update ID_GEN set GEN_VALUE = GEN_VALUE + 1 where GEN_NAME = ‘ NBR_PK’

通过这个sql语句就会明白注解里面各个属性的含义。

对于ID_GEN 表,不需要创建相应的Java entity

这种方式有个好处就是数据库的可移植
package org.app.dict.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Index;

import com.ria.model.BaseVo;

@Entity
//表名+唯一约束限制[如果 表名与实体类名不一致就需要声明]
@Table(name="T_SYS_dict",uniqueConstraints = {@UniqueConstraint(columnNames = {"dict_name"}) })
@org.hibernate.annotations.Table(appliesTo = "T_SYS_dict",comment="字典表")
public class T_SYS_dict extends BaseVo {
	private static final long serialVersionUID = 1L;
	
	@Column(name="AD_Client_ID")
	private int AD_Client_ID;
	
	@Column(name="AD_Org_ID")
	private int AD_Org_ID;
	
	@Column(name="IsActive")
	boolean IsActive = true;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="Created")
	private java.util.Date Created;
	@Column(name="CreatedBy")
	private int CreatedBy;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="Updated")
	private java.util.Date Updated;
	
	@Column(name="UpdatedBy")
	private int UpdatedBy;
	/**
	@Id
    @GeneratedValue(generator = "system-uuid")   
    @GenericGenerator(name = "system-uuid", strategy = "uuid") //hibernate的uuid机制,生成32为字符串
    --or--
    @GeneratedValue(generator = "c-assigned")
    @GenericGenerator(name = "c-assigned", strategy = "assigned") //hibernate的自定义机制
    --or--
    @GeneratedValue(strategy = GenerationType.AUTO,generator="test_sequence")
	@SequenceGenerator(name = "test_sequence",sequenceName="TEST_SEQ")//采用 db sequence
	--or--
	@GeneratedValue(generator="myForeignGenerator")
	@org.hibernate.annotations.GenericGenerator(
   		name="myForeigngenerator",
   		strategy="foreign",
   		parameters=@Parameter(name="property",value="User")
	)
	 */
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Index(name="T_SYS_INDEXS",columnNames={"T_SYS_dict_id"}) //加索引
    @Column(name="T_SYS_dict_id",unique=true)
    private long T_SYS_dict_id;

	@Index(name="T_SYS_INDEXS",columnNames={"dict_name"}) //加索引
	@Column(name = "dict_name", updatable = true, nullable = false, length = 36)
    private String dict_name;

	@Column(name = "remark", updatable = true, nullable = true, length = 255)
    private String remark;

	@Column(name="parent_id")
    private long parent_id;
	@Column(name="dict_order",length=3)
	private int dict_order;
	
}


@TemporalType.(DATE,TIME,TIMESTAMP) 分别Map java.sql.(Date, Time, Timestamp).

@Lob 注解属性将被持久化为 Blog 或 Clob 类型。具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 Clob 类型. java.sql.Blob, Byte[], byte[] 和 serializable type 将被持久化为 Blob 类型。
version属性映射到 "OPTLOCK" 列,entity manager 使用这个字段来检测冲突。 一般可以用 数字 或者 timestamp 类型来支持 version.

实体Bean中所有非static 非 transient 属性都可以被持久化,除非用@Transient注解。

1
0
分享到:
评论

相关推荐

    hibernate anotation 处理一对多关系

    Hibernate Annotation...这些文档不仅覆盖了注解的使用,还包括了Hibernate的架构、使用场景、最佳实践以及与Spring框架的集成等。对于Java开发者而言,这些文档是理解和掌握Hibernate Annotation不可或缺的参考资料。

    hibernate-annotation

    在传统的Hibernate应用中,我们通常使用XML文件来描述对象和表之间的映射关系。然而,随着Java 5的发布,注解成为了一种更简洁、更直观的元数据表示方式。Hibernate注解就是利用这种方式,将对象的映射信息直接写在...

    hibernate_reference_anotation 3.5.0-final pdf

    - **依赖管理**:使用 Maven 或 Gradle 管理项目依赖,添加 Hibernate Core 和 Hibernate JPA 规范的依赖项。 - **IDE 配置**:配置 IDE 支持注解处理,例如 IntelliJ IDEA 或 Eclipse。 ##### 2.2 配置 - **...

    大家看看我设计的泛型DAO(使用Spring的Anotation和Hibernate)

    本篇文章将深入探讨一个使用Spring注解和Hibernate实现的泛型DAO设计,以提高代码的复用性和可维护性。 首先,`HibernateBaseDao.java`是基础的Hibernate DAO类,它提供了对Hibernate操作的基本封装。这个类通常会...

    spring_hibernate_anotations

    整合Spring和Hibernate时,我们通常会使用Spring的Hibernate支持,包括DataSource、SessionFactory和TransactionManager的配置。通过使用@Autowired注解,Spring可以自动装配这些组件。此外,@Transactional注解用于...

    java Anotation

    - 例如,使用`Class.getDeclaredAnnotations()`来获取类上声明的所有注解,或者使用`Method.getAnnotation(Annotation.class)`来获取方法上的特定注解。 #### 三、示例解析 根据提供的部分代码,我们可以进一步...

    anotation_tool

    首先,要使用"anotation_tool",用户需要满足一定的系统配置要求。工具运行环境要求至少有8个逻辑处理器核心(nodes)和npm(Node Package Manager)版本大于5。这两个条件是为了确保工具能够高效且稳定地运行在用户...

    利用java反射、注解及泛型模拟ORM实现

    在Java编程中,反射、注解(Annotation)和泛型是三个非常重要的特性,它们各自...在实际项目中,成熟的ORM框架如Hibernate、MyBatis等已经实现了这些功能,但理解其工作原理对于优化和定制自己的ORM解决方案至关重要。

    spring的练习小sample

    4. **spring_0800_IOC_Anotation_Component**:这是关于Spring的依赖注入(IOC)和注解驱动组件配置的示例。Spring 2.5引入了注解支持,可以使用@Component、@Service、@Repository和@Controller等注解来标记组件,...

    Annotation的关联关系

    保留期注解如@Override、@Deprecated,它们在编译后仍然保留在字节码中,供JVM或运行时库使用。源码级注解只存在于源代码阶段,不会出现在编译后的字节码中,如@Override在没有实际重写方法时会被编译器忽略。编译器...

    spring-core-anotation

    Java配置是Spring框架的一个重要特性,允许开发者使用Java代码而不是XML来定义Bean。这提供了更好的类型安全、代码提示和重构支持。一个典型的Java配置类如下: ```java @Configuration public class AppConfig { ...

    SSH框架搭建

    6. **数据库连接配置**:使用Hibernate的`hibernate.cfg.xml`或Spring的JPA配置,指定数据库连接信息。 7. **测试与运行**:编写测试用例,验证各个组件是否正常工作。启动服务器,访问预设的URL,查看应用是否按...

    2个案例 自定义annotation进行查询对象封装 itext 打印案例

    首先,自定义注解的创建类似于接口定义,但使用`@interface`关键字。我们可以定义一个注解,如`@QueryObject`,并在其中声明一些成员,这些成员通常会带有默认值。例如: ```java import java.lang.annotation....

    ArcGIS Annotation

    当文本数量超过几百个或需要在多个地图中使用可编辑文本时,推荐使用地理数据库注记。相比于地图文档注记,地理数据库注记在ArcMap中的操作速度更快,因为其空间索引的特性使得绘制和选择过程更为迅速。 ### 地理...

    利用Gradle进行Struts 2.5.14.1 注解式开发项目

    使用MyEclipse和Gradle 进行Struts 2.5.14.1 注解式开发项目,总共四个压缩包: (1)struts2-anotation.war 打包发布的war可以直接发布到tomcat服务器 (2)struts2-anotation-lib.zip 注解式开发需要用的lib包 (3...

    AdventureWorksDB

    虽然AdventureWorksDB本身可能没有使用自定义的注解,但它确实展示了最佳实践,比如使用有意义的列名、使用外键约束来维护数据完整性以及使用索引来优化查询性能。 【MVVMArticle】可能是指Model-View-ViewModel ...

    java-annotation-processor:JAVA注释处理器

    处理器通常用于验证注解的使用、生成额外的源文件(如DAO层、Service层的代码自动生成)、或者在编译时进行类型检查等。它们通过`@SupportedAnnotationTypes`,`@SupportedSourceVersion`和`@SupportedOptions`注解...

    词法分析器-计算器-设计与实现实验报告..pdf

    在处理注释时,我们使用了一个anotation函数,该函数可以识别除号/和注释,并将其从源程序中删除。 实验的结果表明,我们的词法分析器可以正确地识别C语言源程序中的各类单词符号,并构造符号表。 实验的结论是,...

    BPMN2.0-概要

    BPMN(BusinessProcessModelAndNotation)- 业务流程模型和符号是有BPMI(BusinessProcessManagementInitiative)开发的一套变准的业务流程建模符号。2004年5月发布了BPMN1.0规范.BPMI于2005年9月并入OMG(The ...

    Struts2 json插件入门指南.pdf

    - **Anotation配置参数** - `@JsonRoot`: 指定对象的根节点名称。 - `@JsonProperty`: 指定属性对应的JSON键名。 #### 9. 小结 本文介绍了如何使用Struts2的JSON插件处理JSON数据。通过不同的配置选项和示例,...

Global site tag (gtag.js) - Google Analytics