`
幽灵线程
  • 浏览: 79067 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Hibernate Annotation文档整理(一)

    博客分类:
  • java
阅读更多

 

Setting up an annotations project

  • HibernateUtil类(Annotation方式)
public class HibernateUtil {
private static final SessionFactory sessionFactory;
    static {
        try {
            sessionFactory = new AnnotationConfiguration()
                    .configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log exception!
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static Session getSession()
            throws HibernateException {
        return sessionFactory.openSession();
    }
}
 
  • 需要添加hibernate.cfg.xml配置文件,内容如:

     

    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
      <session-factory>
        <mapping package="test.animals"/>
        <mapping class="test.Flight"/>
        <mapping class="test.Sky"/>
        <mapping class="test.Person"/>
        <mapping class="test.animals.Dog"/>
    
        <mapping resource="test/animals/orm.xml"/>
      </session-factory>
    </hibernate-configuration>
     

     


    hibernate 特定的属性

Property 
描述 
hibernate.cache.default_cache_concurrency_strategy
当使用注解@Cacheable @Cache时,用来给的默认org.hibernate.annotations.CacheConcurrencyStrategy设置名称,@Cache(strategy="..") 可以覆盖默认设置。 
hibernate.id.new_generator_mappings 
值为true或者false,这个设置表示是否新建的IdentifierGenerator实现类的生成策略为AUTO、Table和Sequence。默认为false,以保持向后兼容性。

我们建议所有新项目使用hibernate.id.new_generator_mappings= true,新的生成器是更有效率和更密切的JPA规范语义。然而,他们不向后兼容现有的数据库(如果ID生成一个序列或表)。

Mapping Entities

Marking a POJO as persistent entity

 

 

@Entity
public class Flight implements Serializable {
    Long id;

    @Id
    public Long getId() { return id; }

    public void setId(Long id) { this.id = id; }
}
public class Flight implements Serializable {
 

 

Defining the table

 

@Table元素包含一个schema和catalog属性,如果他们需要被定义。

你还可以使用@ UniqueConstraint 给表定义唯一约束(建议使用@Column.unique方法。)

 

@Table(name="tbl_sky",
    uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}
)
 

 

通过@Version设置乐观锁

 

@Entity
public class Flight implements Serializable {
    ...
    @Version
    @Column(name="OPTLOCK")
    public Integer getVersion() { ... }
}
 

 

version这个属性会被映射成为乐观锁字段,实体管理器会通过它检测到有冲突的更新。为了防止丢失更新,可以设置最晚提交生效策略(last-commit-wins strategy)。

version字段可以是数字或者时间戳,Hibernate支持自定义的或者适当的实现UserVersionType的类型。

Mapping simple properties

Declaring basic property mappings(声明基本属性映射)

实体中任何一个非静态的、非暂时性属性都认为是持久化字段,除非使用@Transient注解。

属性不加注解相当于加@Basic,@Basic允许声明加载策略(FetchType)。

 

public transient int counter; //transient property

private String firstname; //persistent property

@Transient
String getLengthInMeter() { ... } //transient property

String getName() {... } // persistent property

@Basic
int getLength() { ... } // persistent property

@Basic(fetch = FetchType.LAZY)
String getDetailedComment() { ... } // persistent property

@Temporal(TemporalType.TIME)
java.util.Date getDepartureTime() { ... } // persistent property

@Enumerated(EnumType.STRING)
Starred getNote() { ... } //enum persisted as String in database
 

 

在普通的Java API中,时间精度是没有定义的。当处理时间数据时,你可能需要在数据库中描述期望的时间精度。

时间数据可以有DATE、TIME、TIMESTAMP的精度,通过@Temporal注解可以微调。

@Lob标识属性应该持久化为Blob或者Clob类型,这决定于属性的类型。
java.sql.Clob、Character[]、char[] 和 String会持久化成Clob。
java.sql.Blob、Byte[]、byte[]和Serializable会被持久化成Blob。

 

@Lob
public String getFullText() {
    return fullText;
}

@Lob
public byte[] getFullCode() {
    return fullCode;
}
 

 

分享到:
评论

相关推荐

    Hibernate_Annotation关联映射

    Hibernate Annotation几种关联映射 一对一(One-To-One) ...以上是整理的一点简单的几种映射,可参考EJB3.pdf中P111——P131,hibernate_annotation.pdf 第二章 在这里没有具体的例子,有很多内容还需要仔细查看文档。

    hibernate学习必用

    本资源包“hibernate学习必用”正是针对Hibernate的学习者精心整理的,包含了关键的组件和依赖,旨在帮助初学者快速入门并深入理解Hibernate的核心功能。 首先,我们来看看“hibernate annotations”。这部分内容...

    java5.0新特性总结--Annotation系统学习整理笔记

    注解是一种在源代码中添加元数据的方式,它允许程序员向编译器、JVM或工具提供额外的信息,这些信息可以用于编译时检查、运行时处理,或者生成文档等。与传统的编程语句不同,注解不会改变程序的执行逻辑,它们主要...

    免费下载:自己整理的java学习资料

    自己整理的一些资料,不需要积分,希望对大家有帮助。 里面包有如下的一些java资料 Ant使用指南.pdf cvs.pdf Eclipse入门-- Eclipse的使用简介及插件开发.PDF eclipse插件开发.doc Eclipse插件开发系列.pdf ...

    java 学习文档

    Java学习文档概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它的设计目标是具有跨平台性、可移植性、安全性和高效性,使得Java成为开发桌面应用、Web...

    2010新版Java教程+966页Java实用源码整理learns

    这是一个链接,可能指向更多的Java学习资源,如在线课程、论坛、文档库等,以便进一步深入学习和扩展知识面。 【jsymxx2.zip】 这个文件可能包含特定主题的Java源代码,例如某个项目实例或特定技术的代码示例,供...

    整理后java开发全套达内学习笔记(含练习)

    Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用 [ә'plai] application n.应用,应用程序 [,æ...

    Java的质料.zip

    2. **JAVA核心知识点整理.pdf**: 这个PDF文件很可能涵盖了Java语言的关键概念和技术,包括但不限于: - 基本语法:变量、数据类型、运算符、流程控制(if、switch、for、while)、方法等。 - 类与对象:封装、...

    Java开发相关英语,包括计算机通用英语

    5. **集合框架**:`ArrayList`、`HashMap`、`LinkedList`等都是Java集合框架的一部分,理解它们的功能和用法对于编写高效代码至关重要。 6. **多线程**:`Thread`类、`synchronized`关键字和`Runnable`接口是Java...

    2010最新Java就业笔试面试题大全

    《2010最新Java就业笔试面试题大全》是由知名IT专家张孝祥精心整理的一份Java技术参考资料,旨在帮助求职者准备Java相关的笔试和面试。这份资料包含了丰富的Java编程知识,涵盖了从基础到高级的各种主题,对于Java...

Global site tag (gtag.js) - Google Analytics