hibernate通过注解实现实体和表的映射

参考:

表名的映射:

//代表此类参与ORM映射,此注解必须要有
@Entity
//代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略
@Table(name="user50")
public class User {

主键的映射:

   //主键,此注解必须要有
    @Id
    //数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略
    @Column(name="id")
    //主键的维护策略
    @GenericGenerator(name="inc50",strategy="increment")
    @GeneratedValue(generator="inc50")
    private Integer userID;

属性映射成表的字段:

//@Column(name="name")//此属性要映射到名为name的列上,若属性名和列名相同,则注解可以省略
    private String name;

日期类型的映射:

    @Column(name="birth")
    //如果属性是日期格式,可以设置日期的保存规格
    //time:只保存时间       date:只保存日期         timestamp:(默认)日期+时间
    @Temporal(TemporalType.DATE)
    private Date birthday;

表之间的关系是一对一的映射:

Person实体中:

    //关系属性:告知Passport它的关系属性
    //mappedBy"对方中映射着外键的关系属性==Passport表中有一个关系属性,名字是person50"
    @OneToOne(mappedBy="person50")
    //ALL:增删改都可以级联(cascade)
    //save-update:增加和更新可以级联
    //delete:删除可以级联
    //如果不设置,则增删改都不可以级联
    //注意:查询例外,不受级联权限的控制,默认级联。
    @Cascade(value=CascadeType.ALL)
    private Passport passport50;

Passport实体中:

  //关系属性
    @OneToOne
    //JoinColumn:代表是从表,name的值代表:Passport表中外键名为person_id
    @JoinColumn(name="person_id")
    //@Cascade
    private Person person50;

表之间的关系是一对多的映射:

user表    1: n    order表

user实体:

     @OneToMany(mappedBy="user")
    //ALL:增删改都可以级联(cascade)
    //save-update:增加和更新可以级联
    //delete:删除可以级联
    //如果不设置,则增删改都不可以级联
    //注意:查询例外,不受级联权限的控制,默认级联。
    @Cascade(value=CascadeType.DELETE)
    private Set<Order> orders=new HashSet<Order>();

order实体:

   //关系属性
    @ManyToOne
    //JoinColumn:name代表关系属性映射的列
    @JoinColumn(name="user_id")
    private User user;

表之间的关系是多对多的映射:

Student   n:n    Course      关系表: r_c_s

Student实体:

//关系属性   //EAGER: 查询时关联的数据也同时取出放入内存中,因为在内存里,所以在session外也可以取
    @ManyToMany(fetch=FetchType.EAGER)
    //中间表,两个外键: joinColumns=指向自己的外键   inverseJoinColumns=指向对方的外键
    @JoinTable(name="r_c_s"
               ,joinColumns={@JoinColumn(name="stu_id")}
               ,inverseJoinColumns={@JoinColumn(name="cour_id")})
    @Cascade(value=CascadeType.ALL)
    private Set<Course> courses=new HashSet<Course>();

Course实体:

   //关系属性
    @ManyToMany
    @JoinTable(name="r_c_s"
               ,joinColumns={@JoinColumn(name="cour_id")}
               ,inverseJoinColumns={@JoinColumn(name="stu_id")})
    @Cascade(value=CascadeType.ALL)
    private Set<Student> students=new HashSet<Student>();
时间: 2024-08-09 02:22:06

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

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

一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Column 声明了属性到列的映射.该注解有如下的属性: name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个

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

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

关于hibernate 多实体(多表)连接查询映射到实体的讨论

前提表与实体信息: 在hibernate 查询中,我们经过遇到三种情况: 1.查询事个实体,如: select  b from TableB b; 返回的LIst 中封装的是 实体TableB的实例. 2.查询单个属性,如: select b.id from TableB b; hibernate 返回的List 中封装的是ojbect对象. 3.当查询多于一个属性且又不是整个实体时,如:select b.id,b.mes from TableB b;返回的List中封装的是Object[]数组

Hibernate用注解生成表

User.java实体来 package com.tao.pojo; import javax.persistence.Column; //用注解的方式生成表 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.T

Hibernate的Annotation中实体BLOB CLOB类型的注解

在Hibernate Annotation中,实体BLOB.CLOB类型的注解与普通的实体属性有些不同,具体操作如下: BLOB类型的属性声明为byte[]或者java.sql.Blob: @Lob @Basic(fetch=FetchType.LAZY) @Column(name="IMGS", columnDefinition="BLOB", nullable=true) private byte[] imgs; public byte[] getImgs()

Java、Hibernate(JPA)注解大全

1.@Entity(name=”EntityName”) 必须,name为可选,对应数据库中一的个表 2.@Table(name=””,catalog=””,schema=””) 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 catalog:可选,表示Catalog名称,默认为Catalog(“”). schema:可选,表示Schema名称,默认为

Hibernate中注解的开发

在利用注解开发数据库持久层曾经,须要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范. 就类似于JDBC.Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们能够通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发如今也处于一种趋势.毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一.首先须要导入支持注解开发的jar包: hibernate-annotati

Annotation(二)——Hibernate中注解的开发

在利用注解开发数据库持久层以前,需要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范.就类似于JDBC,Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们可以通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发现在也处于一种趋势,毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一,首先需要导入支持注解开发的jar包: hibernate-annotatio