首先要创建要映射的实体类

一对多映射,一个人可以有多个收货地址

User.java

package star.july.b_annotation;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/*** 使用注解映射*/
/*** @author Starjuly**/
//实体类
@Entity
//表名称
@Table(name="t_user")
public class User {@Id//自增长@GeneratedValue@Columnprivate int id;@Column(name="uName")private String name;//一对多连接//级联操作:CascadeType.ALL//主键维护策略:mappedBy:把关联维护权交给Address的user@OneToMany(cascade={CascadeType.ALL},mappedBy="user")//加入外键//使用mappedBy后就不能使用JoinColumn和JoinTable了
//  @JoinColumn(name="uid")private Set<Address> address = new HashSet<Address>();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 Set<Address> getAddress() {return address;}public void setAddress(Set<Address> address) {this.address = address;}}Address.java
package star.july.b_annotation;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_address")
public class Address {@Id@GeneratedValue@Columnprivate int id;@Column(name="adsName")private String name;@Columnprivate String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}//多对一连接@ManyToOne@JoinColumn(name="uid")private User user = new User();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 User getUser() {return user;}public void setUser(User user) {this.user = user;}}

再要hibernate.cfg.xml中配置映射类

<!-- 映射类 -->
          <mapping class="star.july.b_annotation.User"/>          
          <mapping class="star.july.b_annotation.Course"/>

测试类,包括一对多,多对多,一对一

package star.july.b_annotation;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import star.july.util.HibernateUtil;
//测试注解配置
public class TestDemo {//一对多连接@Testpublic void test(){Session session = HibernateUtil.getSession();Transaction ts = session.getTransaction();try{ts.begin();User u = new User();u.setName("徐凤年");Address ads = new Address();ads.setName("姜妮");ads.setAddress("北凉龙虎山");Address ads2 = new Address();ads2.setName("婓南苇");ads2.setAddress("北凉胭脂郡");u.getAddress().add(ads);u.getAddress().add(ads2);ads.setUser(u);ads2.setUser(u);session.save(u);ts.commit();}catch(Exception e ){e.printStackTrace();ts.rollback();}}//一对多连接@Testpublic void test2(){Session session = HibernateUtil.getSession();Transaction ts = session.getTransaction();try{ts.begin();Student s1 = new Student();s1.setName("小火");Student s2 = new Student();s2.setName("小火");Course c1 = new Course();c1.setName("java开发");Course c2 = new Course();c2.setName("java开发");s1.getCourse().add(c1);s1.getCourse().add(c2);s2.getCourse().add(c1);c1.getStudent().add(s1);c1.getStudent().add(s2);c2.getStudent().add(s1);session.save(s1);session.save(s2);session.save(c1);session.save(c2);ts.commit();}catch(Exception e ){e.printStackTrace();ts.rollback();}}//一对一连接@Testpublic void test3(){Session session = HibernateUtil.getSession();Transaction ts = session.getTransaction();try{ts.begin();Person p1 = new Person();p1.setName("左莫");Person p2 = new Person();p2.setName("杨紫");IdCard c1 = new IdCard();c1.setName("232443453");IdCard c2 = new IdCard();c2.setName("5687651543");p1.setCard(c1);p2.setCard(c2);c1.setPerson(p1);c2.setPerson(p2);session.save(p1);session.save(p2);session.save(c1);session.save(c2);ts.commit();}catch(Exception e ){e.printStackTrace();ts.rollback();}}
}

接下来是多对多的注解映射

Course
package star.july.b_annotation;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_course")
public class Course {@Id@GeneratedValue@Columnprivate int id;@Column(name="cName")private String name;@ManyToMany(mappedBy="course",cascade={CascadeType.ALL})/*@JoinTable(//中间表的表名name="student_course",//当前表的外键joinColumns=@JoinColumn(name="cid"),//关联表的外键inverseJoinColumns=@JoinColumn(name="sid"))*/private Set<Student> student = new HashSet<Student>();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 Set<Student> getStudent() {return student;}public void setStudent(Set<Student> student) {this.student = student;}}Student..java
package star.july.b_annotation;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.CascadeType;
@Entity
@Table(name="t_student")
public class Student {@Id@GeneratedValue@Columnprivate int id;@Column(name="sName")private String name;@ManyToMany@JoinTable(//中间表的表名name="student_course",//当前表的外键joinColumns=@JoinColumn(name="sid"),//关联表的外键inverseJoinColumns=@JoinColumn(name="cid"))private Set<Course> course = new HashSet<Course>();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 Set<Course> getCourse() {return course;}public void setCourse(Set<Course> course) {this.course = course;}}
最后是一对一的注解映射
人和身份证
摘取其中最重要的代码片段:
Person.java
@OneToOne(cascade={CascadeType.ALL},mappedBy="person")
          private IdCard card;
IdCard.java
          @OneToOne
           //外键唯一

          @JoinColumn(name="uid",unique=true)
          private Person person ;

Hibernate 注解映射相关推荐

  1. hibernate注解映射继承关系

    为什么80%的码农都做不了架构师?>>>    数据库表 用户表(User) id username password 客户表(Customer),客户表id引用用户表id id p ...

  2. Hibernate实体映射配置1(java@注解方式)

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  3. 使用Hibernate注解Annotations进行对象映射的异常处理

    通过Hibernate注解Annotations进行对象映射,想在Oracle数据库中自动创建表,代码如下: 实体类: import javax.persistence.Basic; import j ...

  4. 【Hibernate】映射关系总结

    在hibernate中,由于是对对象进行操作,但是要实现表与表之间的关系,是怎么样实现的呢? 一.Hibernate的映射 Hibernate是对对象进行操作,Hibernate的映射是描述数据库表的 ...

  5. Hibernate 注解配置

    近几年来,注解方式的配置因其简单易用的特点深受广大程序员的青睐,Hibernate也添加了对注解配置的支持.接下来我们就以论坛系统为例来讲解基于注解配置实体类和表的映射关系,以及实体和实体的关联关系. ...

  6. Hibernate注解使用以及Spring整合

    (1) 简介: 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiber ...

  7. Hibernate学习之Hibernate注解总结

    Hibernate学习之Hibernate注解总结http://www.bieryun.com/3269.html 一.类级别的注解 @Entity name:表的名字(可选)一般表名和类名相同 必须 ...

  8. Hibernate之映射

    一.映射文件 Hibernate在实现ORM功能的时候主要用到的文件有:     1. 映射类(*.Java) 描述数据库表的结构,表的字段映射为类的属性,表的记录映射为类的对象.        2. ...

  9. (转) Hibernate注解开发

    http://blog.csdn.net/yerenyuan_pku/article/details/70162268 Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以 ...

最新文章

  1. iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案...
  2. 泛在电力物联网分析—架构形式
  3. SAP WebIDE 里的 neo-app.json 文件用途
  4. C++静态数据成员和静态成员函数
  5. 8.8.8.8,Google推出免费DNS解析服务器
  6. 【设计模式:单例模式】单例模式02:懒汉模式
  7. 想要轻松入门数据分析,这些知识不得不看!
  8. tp3.2 自动加载
  9. WINDOWS内核对象及其理解
  10. eda多功能数字钟课程设计_eda多功能数字钟设计_相关文章专题_写写帮文库
  11. PS中如何简单、快速更换照片的背景色
  12. IPv6技术精要--第5章 IPv6公网单播地址
  13. Aspose.Words for .NET使用文档教程(5):如何使用脚注和尾注并设置每页行字数
  14. linux系统的服务
  15. C++-灰度图上色GrayToColor
  16. 软件图形用户界面设计
  17. NIKE ZOOM ASTORIA SKY HI ACG (MUSTARD/TAN)
  18. 牛客网练习题53-A-超越学姐爱字符串题解
  19. [Swift]修改NSLayoutConstraint的multiplier
  20. 【报错】win键被锁怎么解锁

热门文章

  1. Boost------ windows 库的编译安装
  2. MIMIC 以太坊医疗项目开发(5)truffle部署智能合约
  3. Linux常用的基本命令vi、ps、kill(四)
  4. python操作mysql操作步骤
  5. 进程间通信——DLL共享节
  6. MessageBoxA 和MessageBoxW
  7. ProxyShell利用分析1——CVE-2021-34473
  8. Windows系统调用学习笔记(三)—— 保存现场
  9. MySQL AS:设置别名
  10. 【PAT乙级】1080 MOOC期终成绩 (25 分)