注解
来源:互联网 发布:外企 工作 知乎 编辑:程序博客网 时间:2024/06/06 01:59
一对一注解
@Entity@Table(name = "Card")public class Card { @Id @GeneratedValue private Integer cid; @Column private String cname; @OneToOne(mappedBy = "card",cascade = CascadeType.ALL) private People people;
People类
@Entity @Table(name = "People")public class People { @Id @GeneratedValue private Integer pid; @Column private String pname; @OneToOne @JoinColumn(name = "cid") private Card card;
hibernate.cfg.xml
<mapping class="cn.happy.zhujie.onetoone.Card"/> <mapping class="cn.happy.zhujie.onetoone.People"/>测试类
Configuration cfg;SessionFactory factory;Session session;Transaction tx;@Beforepublic void mybefor(){ cfg=new Configuration().configure(); factory=cfg.buildSessionFactory(); session=factory.openSession(); tx=session.beginTransaction();}@Afterpublic void myafter(){ tx.commit();} //一对一注解@Testpublic void test01() { People people=new People(); Card card=new Card(); people.setPname("111"); card.setCname("123133"); card.setPeople(people); people.setCard(card); session.save(card);}--------------------一对多注解-----------------------------Dept类@Entity@Table(name = "Dept01")public class Dept {@Id@GeneratedValueprivate Integer did;@Columnprivate String deptname;@OneToMany(mappedBy = "dept",cascade = CascadeType.ALL,fetch = FetchType.LAZY)private Set<emp> em=new HashSet<emp>();emp类@Entity@Table(name = "Emp01")public class emp { @Id @GeneratedValue private Integer eid; @Column private String name; @ManyToOne @JoinColumn(name = "did") private Dept dept;hibernate.cfg.xml<mapping class="cn.happy.zhujie.onetoone.Dept"/> <mapping class="cn.happy.zhujie.onetoone.emp"/>测试类//添加部门 一对多注解@Testpublic void loadText(){ Dept dept=new Dept(); dept.setDeptname("财务部"); emp emps=new emp(); emps.setName("啦啦"); dept.getEm().add(emps); emps.setDept(dept); session.save(dept); // tx.commit(); System.out.println("save ok!!");}使用Hibernate注解的步骤如下:(1)使用注解配置持久化类及对象关联关系
(2)在Hibernate配置文件(hibernate,cfg,xml)中声明持久化类,语法如下:
<mapping class="持久化类完整限定名" />
配置持久化类的常用注解
@Entity 将一个类声明为一个持久化类
@Table 为持久化类映射指定表(table),目录(catalog)和schema的名称。默认值:持久化类名,不带包名
@Id 声明了持久化类的标识属性(相当于数据表的主键)
@GeneratedValue 定义标识属性值的生成策略
@UniqueConstraint 定义表的唯一约束
@Lob 表示属性将被持久化为Blob或者Clob类型
@Column 将属性映射到数据库字段
@Transient 指定可以忽略的属性,不用持久化到数据库
使用注解配置关联关系
@OneToOne 建立持久化类之间的一对一关联关系
@OneToMany 建立持久化类之间的一对多关联关系
@ManyToOne 持久化类之间的多对一关联关系
@ManyToMany 建立持久化类之间的多对多关联关系