Hibernate-Annotation初步

本文介绍Hibernate注解的使用方法,包括基本配置、一对多关系映射及注解继承等内容。

使用annotation 的作用

使用了annotation 后可以自动不用写 *.hbm.xml 的配置文件。方便省事。

 

使用annotation 的相关 jar 文件

在使用annotation 时要用到的 jar 文件:

 

相关文件

对应的jar 文件

hibernate-annotations-3.4.0.GA.zip

hibernate-annotations.jar、 lib/ejb3-persistence.jarlib/hibernate-commons-annotations.jarlib/slf4j-api.jar

hibernate-distribution-3.3.2.GA-dist.zip

hibernate3.jar、 lib/required/*.jar

数据库连接

mysql-connector-java-5.1.10-bin.jar

 

 

使用annotation 的一个简单实例

要让一个对象(类)使用annotation 应该在一个类的头部加上: @Entity,

import  javax.persistence.Column;

import  javax.persistence.Entity;

import  javax.persistence.Table;

// 加了Entity 才会使用到 annotationtable 意为创建的表名为: t_student

@Entity

@Table (name= "t_student" )

public   class  Student {

private   Integer  id ;

private  String  name ;

     // 让该字段为id ,即设置其为主键,自动增加

     @Id

@GeneratedValue(strategy=GenerationType.AUTO)

     //修改字段的长度 5

@Column (length=5)

public   Integer  get Id () {

return   i d ;

}

     // 设置字段名为name, 修改字段的长度 20

@Column (name= "name" ,length=20)

public  String get N ame() {

return   name ;

}

public   void  set Id ( Integer id ) {

this . id  =  id ;

}

     public   void  set Name (String  name ) {

this . name  =  name ;

}

}

 

 

以上便写好了一个简单的对象,将会创建一张名为:t_student 的数据表,有一个主键 id 和一个 name 这样两个字段。要使这样一个对象能自动的生成一张数据表还应该在 src 目录下的 hibernate.cfg.xml 配置文件中加入:

 

< mapping  class = "org.zsl.exam.model.Student" /> <!-- 包名加对象名  -->

Hibernate.cfg.xml配置文件

Hibernate.cfg.xml配置文件内容如下:

<? xml  version = '1.0'  encoding = 'utf-8' ?>

<! DOCTYPE  hibernate-configuration  PUBLIC

         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >

 

< hibernate-configuration >

< session-factory >

 

<!-- Database connection settings -->

< property  name = "connection.driver_class" > com.mysql.jdbc.Driver </ property >

< property  name = "connection.url" > jdbc:mysql://localhost:3306/exam </ property >

< property  name = "connection.username" > exam </ property >

< property  name = "connection.password" > exam123 </ property >

< property  name = "connection.useUnicode" > true </ property >

< property  name = "connection.characterEncoding" > UTF-8 </ property >

 

 

<!--  数据库方言,这里为MySQL 的数据库  -->

< property  name = "dialect" > org.hibernate.dialect.MySQLDialect </ property >

 

<!-- Disable the second-level cache  -->

< property  name = "cache.provider_class" > org.hibernate.cache.NoCacheProvider </ property >

 

<!--  是否显示sql 语句  -->

< property  name = "show_sql" > true </ property >

<!--  自动更新数据库  -->

< property  name = "hbm2ddl.auto" > update </ property >

< mapping  class = "org.zsl.exam.model.Student" />

</ session-factory >

</ hibernate-configuration >

Hibernate annotation的一对多

在多的那方加入:

…………

private  Teacher  teacher ;

//说明是多对一

@ManyToOne

//在本表里加入外键的字段名为: tea_id

@ JoinColumn (name= "tea_id" )

public  Teacher getTeacher() {

return   teacher ;

}

    …………

 

在一的那方加入:

    …………

private  Set<Student>  students ;

//说明是一对多,mappedBy指的是在多方对象里指明外键的属性名

//targetEntity表示多方对象

     @OneToMany (mappedBy= "teacher" ,targetEntity=Student. class )

public  Set<Student> getStudents() {

return   students ;

}

    …………

 

Annotation的继承

要使一个对象的annotation 被其它对象所继承很简单,只用在父类的头部加上:

@MappedSuperclass

如:

@MappedSuperclass

public   class  BaseEntity {

 

private  Integer  id ;

 

@Id

@GeneratedValue (strategy=GenerationType. AUTO )

@Column (length=5)

public  Integer getId() {

return   id ;

}

 

public   void  setId(Integer id) {

this . id  = id;

}

}

这样只要继承了BaseEntity 的子类都会具有一个主键 id

前言 1. 翻译说明 2. 版权声明 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观锁定版本控制 2.2.2. 映射简单属性 2.2.2.1. 声明基本的属性映射 2.2.2.2. 声明列属性 2.2.2.3. 嵌入式对象(又名组件) 2.2.2.4. 无注解之属性的默认值 2.2.. 映射主键属性 2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表(secondary tables) 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 2.3.2. 映射本地化查询 2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4.3.1. 访问类型 2.4.3.2. 公式 2.4.3.3. 类型 2.4.3.4. 索引 2.4.3.5. @Parent 2.4.3.6. 生成的属性 2.4.4. 继承 2.4.5. 关于单个关联关系的注解 2.4.5.1. 延迟选项和获取模式 2.4.6. 关于集合类型的注解 2.4.6.1. 参数注解 2.4.6.2. 更多的集合类型 2.4.7. 缓存 2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1.4. 关联级别的元数据 4. Hibernate验证器 4.1. 约束 4.1.1. 什么是约束? 4.1.2. 内建约束 4.1.3. 错误信息 4.1.4. 编写你自己的约束 4.1.5. 注解你的领域模型 4.2. 使用验证器框架 4.2.1. 数据库schema层次验证 4.2.2. Hibernate基于事件的验证 4.2.3. 程序级验证 4.2.4. 验证信息 5. Hibernate与Lucene集成 5.1. 使用Lucene为实体建立索引 5.1.1. 注解领域模型 5.1.2. 启用自动索引 A. 术语表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值