Hibernate中的Annotation注解与XML配置的使用

通过XML配置来实现持久化

首先我们来建立一个实体类:

package com.hibernate.model;

public class Student {
    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    
}
<?xml version="1.0"?>
<!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.hibernate.model">

    <class name="Student" table="t_student">
        <id name="id" column="s_id">     
            <generator class="native" />
        </id>
        <property name="age" />     <!-- 若字段属性值与数据库字段相同可不写 -->
        <property name="name" />
    </class>
</hibernate-mapping>

XML文件中的id用于指明哪个column字段是数据库表t_student中的主键,property中的column属性用于指明类属性名对应数据库表的哪个字段,如果属性名和字段名一直,该column可以省略,如上中的age和name属性。

至此,只要将该XML文件加入Hibernate的hibernate.cfg.xml中就可以:   hibernate.cfg.xml中代码如下

<mapping resource="com/hibernate/model/Student.hbm.xml" />  <!-- XML文件的方式 -->

通过Annotation注解来实现持久化:

首先同样我们来建立一个持久类

package com.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * 注意注解一点要写在get()方法上,写在Field中有点违反面向对象编程,因为Hibernate会访问限定符为private的该属性
 * @author Administrator
 *
 */
@Entity
@Table(name="t_teacher")
public class Teacher {   //类名必须和数据库的表明一致     
    private int id;
    private String addr;
    private String sex;
    private String youwifename;
    private Zhicheng _zhicheng;   //枚举类型
    
    public enum Zhicheng{A,B,C}  //实现枚举类型
    
    @Enumerated(EnumType.STRING)
    public Zhicheng get_zhicheng() {
        return _zhicheng;
    }
    public void set_zhicheng(Zhicheng _zhicheng) {
        this._zhicheng = _zhicheng;
    }
    
    
    @Transient                          //标注为透明,表示数据库中将不建立该字段
    public String getYouwifename() {
        return youwifename;
    }
    public void setYouwifename(String youwifename) {
        this.youwifename = youwifename;
    }
    @Id
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
    
    
}

OK!注解实现持久化很简单吧。接下来只要将注解的类加入hibernate.cfg.xml中:

<mapping class="com.hibernate.model.Teacher"/>      <!--注解的方式  -->

接下来说一下注解的详细情况:

@Entity       表示该类将使用注解来实现持久化
@Table(name="t_teacher")  当类名和表名不一致时使用该注解,可以实现Teacher对应数据库表t_teacher
@Transient                          标注为透明,表示数据库中将不建立该字段
@Enumerated(EnumType.STRING)         表明该字段是枚举类型

总结:明显使用Annotation来实现持久化更加简单,现在企业中在Hibernate一般都使用Annotation,而很少使用XML。

时间: 2024-10-24 21:11:49

Hibernate中的Annotation注解与XML配置的使用的相关文章

hibernate中使用Annotation

在hibernate中使用annotation非常方便我们的web开发.下面对比一下使用annotation和和不使用之间的差别吧. 首先,无论你是否使用annotation,都必须有hibernate的配置文件(hibernate.cfg.xml),这个在hibernate的自带的手册中能找到,这里就不给出了. 其次建立一个名为Student的实体类,如下: 1 public class Student { 2 private int id; 3 private String name; 4

mybatis使用注解替代xml配置,动态生成Sql

mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectProvider来动态生成sql. 典型的使用场景 1. 无参数@SelectProvide方法在Mapper接口方法上和@SelectProvide指定类方法上,均无参数:UserMapper.java: 1     @SelectProvider(type = SqlProvider.class, 

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

Hibernate中使用@Lob 注解保存String[] 问题

Hibernate中使用@Lob 注解保存String[] 问题 在Hibernate注解中如何你想保存一个字段为String数组类型,如果你想尝试保存为clob类型的话,一般情况下为定义为: @Entity Public class Person { - @Lob String[] stringArray; -. } 多数时候当你自动创建表的时候,Hibernate会告诉你Json无法转换或者类转换错误,原因在于你保存text类型文本,Hibernate只接受String类型的,当你定义为St

SSH框架中使用注解和xml配置的区别

注解是一般是你开发框架,jar包时候给别人提供的,如ssh,使用者在框架里面用了注解,框架的源码会通过反射去分析注解,形成配置信息,从而替代配置文件. 而从目前的形式看,注解确实是一大趋势,因为其方便快捷简单,将来可能会统一替代配置文件. 不过目前注解还有两处劣势:1.写在java代码里面,配置信息不集中,不方便更改2.注解毕竟是通过反射解析,有些复杂配置的实现不如通过配置文件容易实现

hibernate中写配置文件xxx.hbm.xml时那个成员变量的类型type如何写的问题

hibernate中的类型就是8种基本类型的包装类首字母变为小写,有integer,long,short,float,double,charchter,byte,boolean,当然还包括其他类型如:yes_no,true_false hibernate中的类型的作用是匹配数据库表中字段的类型和Java类中属性的类型不匹配的问题的一种解决方案,比如string完成从java.lang.String到VARCHAR的映射,所以在xxx.hbm.xml映射文件中我们写属性的类型时会写成如type="

spring中的annotation注解类配置

1,@Autowired     1) @Autowired使用后需要在xml文件加入以下配置才能生效: <context:annotation-config/> 2)@Autowired默认使用byType来装配属性,如果匹配到类型的多个实例,再通过byName来确定Bean. 2,@Resource 1)@Resource的作用和@Autowired差不多,只不过 @Resource是默认先用byName,如果找不到合适的就再用byType来注入 2)在xml文件加入以下配置才能生效: &

Spring中的AOP注解方式和配置方式

今天学习了下spring中的切面编程:结合之前看过的视频.整合一下思路: 基本类: 接口: public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } 接口的实现: import org.springframework.stereotype.Component; @Component("ar

hibernate中实体类注解

一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. Target({METHOD,FIELD}) @Retention(RUNTIME) public @interface GeneratedValue{ G