hibernate用注解配置实体类的映射

一、注解类

1. @Table

声明了该实体bean映射指定的表(table),目录(catalog)和schema名字

2. @Id

声明了该实体bean的标识属性(对应表中的主键)。

3. @Column

声明了属性到列的映射。该注解有如下的属性:

name 可选,列名(默认值是属性名)

unique 可选,是否在该列上设置唯一约束(默认值false)

nullable 可选,是否设置该列的值可以为空(默认值false)

insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true)

updatable 可选,该列是否作为生成的update语句中的一个列(默认值true)

columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植)

table 可选,定义对应的表(默认为主表)

length 可选,列长度(默认值255)

precision 可选,列十进制精度(decimal precision)(默认值0)

scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)

4. @GeneratedValue

声明了主键的生成策略。该注解有如下属性:

strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO

GenerationType.AUTO 主键由程序控制

GenerationType.TABLE 使用一个特定的数据库表格来保存主键

GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)

GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。这个值要与generator一起使用,generator 指定生成主键使用的生成器(可能是orcale中的序列)。

5. GenericGenerator

声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性:

name 指定生成器名称。

strategy 指定具体生成器的类名(指定生成策略)。

parameters 得到strategy指定的具体生成器所用到的参数。

6. @Transient

声明了非持久化属性,即数据库中没有相应的映射字段,是一个普通属性。

7. @Temporal

声明了日期类型。

TemporalType.DATE 日期,例:2011-04-12

TemporalType.TIME 时间,例:22:50:30

TemporalType.TIMESTAMP 日期和时间,例:2011-04-12 22:51:30

二、看例子

Role.class

@Entity
@Table(name="role")
public class Role implements Serializable{

    private String roleId;
    private String roleName;
    @Id
    @Column(name="roleid")
    @GenericGenerator(name="generator", strategy = "uuid.hex")
    @GeneratedValue(generator="generator")
    public String getRoleId() {
        return roleId;
    }
    public void setRoleId(String roleId) {
        this.roleId = roleId;
    }
    @Column(name="rolename")
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

}

Student.class

@Entity
@Table(name="student")
public class Student implements Serializable{

    private String stuId;
    private String stuName;
    private Role role;

    @Id
    @Column(name="stuid")
    @GenericGenerator(name="generator",strategy="uuid.hex")
    @GeneratedValue(generator="generator")
    public String getStuId() {
        return stuId;
    }
    public void setStuId(String stuId) {
        this.stuId = stuId;
    }
    @Column(name="stuno")
    public String getStuNo() {
        return stuName;
    }
    public void setStuNo(String stuNo) {
        this.stuName = stuNo;
    }
}

三、在spring容器的配置

实体类写好之后,需要在spring容器中加载,在配置sessionFactory时进行配置,有两种配置的方式

1、使用annotatedClasses

        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
            <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
        <!-- <property name="packagesToScan"  value="com.demo.entity"/> -->
        <property name="annotatedClasses">
            <list>
                <value>com.demo.entity.Role</value>
                <value>com.demo.entity.Student</value>
            </list>
        </property>
    </bean> 

2、使用packagesToScan直接对实体类进行扫描

        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
            <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            </props>
        </property>
        <property name="packagesToScan"  value="com.demo.entity"/>
    </bean>
时间: 2024-12-20 12:34:08

hibernate用注解配置实体类的映射的相关文章

Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类

一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3.6)版 添加如下地址:http://download.jboss.org/jbosstools/updates/stable/helios/ 选择性安装:hibernate tools在All Jboss tools节点下面 eclipse indigo(3.7)版 添加如下地址:http://downl

Eclipse从数据库逆向生成Hibernate带注解的实体类

新增Hibernate配置文件: [1]右键选择项目->New->Others,选择新增Hibernate配置文件 [2]填写相应的参数 新增数据库配置文件 [1]打开 Hibernate Configurations模块,新增Add Configuration 选择数据库: 选择UTF-8编码: 生成代码注解类:

Hibernate中用注解配置一对多双向关联和多对一单向关联

Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解开发包 配置持久化类 配置关联关系 下面我们先从多对一单向关联关系讲起,多对一单向关联就是在多的一方植入一的一方的主键作为外键,下面我们先进行初始配置, 在配置的过程中我们会遇到一个问题  就是无论用load还是get都不会出现延迟加载,那么我们应该如何设置为要延迟加载,这样做的好处是可以在用的时候

使用工具自动生成hibernate的配置文件、实体类与连接数据库

注:图前文字是解释图中的内容. 一.导包 新建一个项目,将hibernate和mysql的jar包导入,放到项目中lib文件夹中,如果没有lib可以自己建一个. hibernate需导入的jar包位置:\hibernate-release-5.2.6.Final\lib\required\"复制粘贴里面所有的" 数据库的jar找到自己存储位置,位置粘贴 二.窗口--显示视图--打开Hibernate Configurations--在Hibernate Configurations的空

通过MyEclipse生成实体类及映射文件

1.在工程上添加hibernate支持,导入相关包,修改配置文件为如下: 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

批量产生ssh2项目中hibernate带注解的pojo类的快捷方法

近几个月一直在忙于项目组的ios应用项目的开发,没有太多时间去研究web应用方面的问题了.刚好,昨天有网友问到如何批量产生hibernate带注解的pojo类的快捷方法,所谓批量就是指将当前数据库中所有数据表全部一次性生成带注解的pojo类,假设当前数据库friend有50个数据表,如果一个个的新建产生pojo类的话,那就是说要手工输入新建50个pojo类后,还有输入每个类带注解的代码,并且还要写好有关联的类之间的映射关系,虽然,从学习的角度来说,手工写是个不错的主意,但是从开发效率和开发成本来

Hibernate初学---注解配置

ssh框架是每个java程序员的基本功,工作中虽然没有用到,还是学习一下,做点学习笔记,算是一点积累吧. 废话不多说,先上手来一个简单的demo,感受一把. 开发工具:myeclipse 10 数据库:mysql 创建个简单的java工程, 第一步,创建一个学生类,代码如下: package com.huawei.vo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.p

java 根据实体类创建映射文件

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import java.util.Set; import com.mohe.model.entity.Teach; /** * 根据实体类生成映射文件 * * @author dxm * */ public class Obj

Mybatis配置文件和实体类的映射文件,以及dao层的书写

mybatis-config.xml,配置文件,用于连接数据库.底层使用的是oracle数据库的emp表 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd&