Hibernate 学习(二)Hibernate注解形式配置
2017-05-13 23:32
351 查看
搭建Hibernate的过程
1.添加jar包2.创建持久化类
3.Hibernate的配置文件(数据库相关信息,和Hibernate基本配置信息)
4.创建对象关系映射文件(基于配置文件的映射,还有基于注解的方式实现)
5.通过Hibernate API编写访问数据库的代码
对Hibernate映射文件详解,配置信息用来干嘛的在配置文件中都有详细的说明。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.iflytek.test.domain"> <!-- 指定pojo和table之间的映射 --> <class name="Student" table="TB_STUDENT"> <!-- pojo 属性和 数据库表字段进行映射 --> <!-- pojo中的主键属性 id hibernate中必须配置 --> <id name="id" column="ID" type="long"> <!-- oracle数据库中id属性设置为自增长类型 --> <generator class="sequence"> <param name="sequence">SEQ_STUDENT</param> </generator> </id> <!-- 可选属性 type:指定java类型 not-null:属性不能为空 unique:记录必须唯一 length:对属性的长度进行检查 --> <property name="name" column="NAME" type="string" not-null="true" length="20"></property> </class> </hibernate-mapping>
对于实体之间一对一,一对多之间的这种映射关系的配置,留在通过属性配置ORM来说明,再此不使用配置文件的形式来实现。
Hibernate API提供发几个基本的CRUD方法
public class FirstTest { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); Student stu = (Student) session.get(Student.class, 2l); System.out.println(stu.toString()); Student s = new Student(); s.setName("Lily"); //session API几个基本的CRUD方法 session.delete(s); session.update(s); session.saveOrUpdate(s); session.save(s); transaction.commit(); session.close(); } }
现在开始基于注解的形式创建Hibernate项目
项目结构基本不变,配置文件中配置ORM映射做一个修改,删除Student.hbm.xml映射文件采用注解的形式。<!-- <mapping resource="com/iflytek/test/domain/Student.hbm.xml"/> --> <!-- 基于注解的形式配置ORM映射 --> <mapping class="com.iflytek.test.domain.Student"/>
对于Entity类加上注解
package com.iflytek.test.domain; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * @desc: Hibernate02 * @author: star2013 * @createTime: 2017年5月14日 上午12:12:05 * @history: * @version: v1.0 */ //注解称之为标注,标记为打一个标签 //@Entity,注册在类头上,将一个类声明为一个实体bean(即一个持久化POJO类) //@Table,注册在类头上,注解声明了该实体bean映射指定的表(table)。 //@SequenceGenerator主键生成策略,name别名,sequenceName数据库中的sequence名.一般两个值取一样 @Entity @Table(name="TB_STUDENT") @SequenceGenerator(name="SEQ_ID",sequenceName="SEQ_STUDENT") public class Student { //@Id用来标识主属性列 //标记主键生成策略 @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_ID") private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]"; } }
测试以注解的形式配置ORM是否生效,运行程序观看控制台的打印信息:
从控制台中的信息可以看出,使用注解的形式来配置是生效了的,通过这样的方式可以有效的减少了每一个类写一个ORM映射文件的工作量,通过注解就可以完成基本的信息配置。
常用注解的配置信息解释
注解:实际上是一个注释,用来标记对象(字段,type,方法),为特殊用途,给某些程序读取使用target:标记目标,type field method
@Retention:状态持续的范围(一般是配置运行状态生效)
@Entity,注册在类头上,将一个类声明为一个实体bean(即一个持久化POJO类) 。
@Table,注册在类头上,注解声明了该实体bean映射指定的表(table)。
@SequenceGenerator( name=”SEQ_ID”,sequenceName=”my_sequence”)
@Id用来标识主属性列,
标记主键生成策略
@GeneratedValue:@GeneratedValue(strategy=GenerationType.IDENTITY)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator=”SEQ_ID”)
@Column:标识列-属性,
@Transient用来注册不是数据库关联的属性
以上的@Id、@GeneratedValue、 @Column:可以写在属性也可写在属性对应的getter上。
@Transient注册在多余的属性上,在getter上时必须与以上的@Column等对应
@Column里面的属性
name=”列名” (用于处理当数据库的表与pojo属性不一样的情况)
unique=false该列是否设置唯一 默认false
nullable 该列是否可为空 默认false
insertable :该列在生成的insert语句中的出现 默认 true
updatable :该列在生成的update语句中的出现 默认 true
length :长度 默认255
相关文章推荐
- Hibernate4学习总结(2)--配置形式的集合映射,关联关系映射
- Spring学习(六)spring整合注解形式的hibernate
- Hibernate学习笔记 3 - 关系映射配置(基于注解)
- Hibernate4学习总结(4)--注解形式的集合映射,关联关系映射
- Hibernate框架学习之注解配置关系映射
- 我的hibernate学习之旅(3)~通过给类文件添加注解的方式来配置映射
- Hibernate学习(3) (继承映射,配置文件和注解版)
- spring学习笔记(3)——注解形式配置
- 传智播客hibernate学习,开发环境配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- SSH学习笔记之关于struts-spring-hibernate整合配置问
- Hibernate学习文档_02_一些配置选项和接口
- Hibernate学习笔记:配置hibernate日志
- [注解的力量]Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- Hibernate学习笔记之EHCache的配置
- Hibernate 继承的注解配置
- Hibernate学习笔记 2 - 关系映射配置
- {传智播客} (学习笔记)--hibernate的使用和配置
- hibernate3 学习笔记(三) hibernate 日志配置文件 log4j.properties
- Hibernate学习一:配置及简单实例的创建过程