接着导入—>注解所需要的包 ejb3-persistence.jar、hibernate-annotations.jar、hibernate-commons-annotations.jar
图示:
部门实体类与注解
package bean; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; @Entity @Table(name="deptNew") public class Dept { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_dept") @SequenceGenerator(name="seq_dept",sequenceName="seq_dept",initialValue=1,allocationSize=1) private Integer id; @Column private String deptName; //添加关系 @OneToMany @Cascade(CascadeType.SAVE_UPDATE) @JoinColumn(name="deptid") private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; } /* * 构造方法 * */ public Dept() { } public Dept(String deptName) { super(); this.deptName = deptName; } /* * 封装方法 * */ public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } }
员工实体类与注解
package bean; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Table; @Entity @Table(name="empNew") public class Emp { //员工编号 @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="emp_generator") @SequenceGenerator(name="emp_generator",sequenceName="seq_emp",initialValue=1,allocationSize=1) private Integer empNo; //员工姓名 @Column private String empName; @ManyToOne() @JoinColumn(name="deptid") private Dept dept; public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } /* * 构造方法 * */ public Emp() { } public Emp(String empName) { super(); this.empName = empName; } /* * 封装方法 * */ public Integer getEmpNo() { return empNo; } public void setEmpNo(Integer empNo) { this.empNo = empNo; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } }
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-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <!-- 数据库URL --> <property name="connection.url"> jdbc:oracle:thin:@localhost:1521:oracle11 </property> <!-- 数据库用户 --> <property name="connection.username">A_hr</property> <!-- 数据库用户密码 --> <property name="connection.password">123456</property> <!-- 数据库 JDBC 驱动 --> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <!-- 是否将运行期生成的 SQL 输出到日志以供调试 --> <property name="show_sql">true</property> <!-- 每个数据库都有其对应的 Dialect 以匹配其平台特征 --> <property name="dialect"> org.hibernate.dialect.OracleDialect </property> <property name="hbm2ddl.auto">create</property> <mapping class="bean.Emp" /> <mapping class="bean.Dept" /> </session-factory> </hibernate-configuration>
进行数据操作
package test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import util.HibernateSessionFactory; import bean.Dept; import bean.Emp; public class TestAnnotation { public static void main(String[] args) { //addEmp(); oneToMany(); //manyToOne(); } private static void oneToMany() { Emp emp=new Emp("李四"); Dept dept=new Dept("财务部"); dept.getEmps().add(emp); Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.save(dept); tx.commit();//隐式调用刷新方法 System.out.println("保存成功"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateSessionFactory.closeSession(); } } private static void manyToOne() { Emp emp=new Emp("李四"); Dept dept=new Dept("财务部"); emp.setDept(dept); Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.save(emp); session.save(dept); tx.commit();//隐式调用刷新方法 System.out.println("保存成功"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateSessionFactory.closeSession(); } } private static void addEmp() { Emp emp=new Emp("张三"); Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.save(emp); tx.commit();//隐式调用刷新方法 System.out.println("保存成功"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateSessionFactory.closeSession(); } } }
效果图:
查询数据的语句
select id, deptname from deptnew; select empno, empname, deptid from empnew
相关推荐
Hibernate关于注解的一对多,多对多,一对一案例。。。。
hibernate 注解 一对多,多对一,多对多,注解解释
Hibernate双向一对一关联映射(注解版)
hibernate双向一对多关联映射(注解版)
hibernate 注解生成表 JPA注解1、@Entity(name="EntityName")必须,name为可选,对应数据库中一的个表2、@Table(name="",catalog="",schema="")可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体...
Hibernate一对一,一对多,多对多实例
hibernate单向一对多关联映射(注解版)
Hibernate多对一映射(注解版)
* @OneToMany 设置一对多关联。cascade属性指定关联级别,参考@OneToOne中的说明。fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多...
annotationhibernate实体注解 一对多和多对一 详解 初学者必看 写的非常明白
使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。
NULL 博文链接:https://profound-accumulation.iteye.com/blog/2243079
ssh全注解项目(一对一,一对多,多对多),hibernate的注解配置及映射关系
重点包括一对一,一对多及多对多关系的配置代码实例。 myeclipse项目工程导入即可运行(需要自行导入hibernat4.1.4包依赖(myeclipse中自带此包))。每个实例均附说明及mysql的库表sql。另,如果要测试代码中的hbm2...
这个PDF用一个实例讲解了怎么来处理一对多和多对一的关系,利用anotation来设定的,很有参考价值。
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...
Hibernate 的注解学习 ExportDBAnnotation HibernateAnnotationUtils 【一对一】关系映射【一对多】关系映射 【多对多】关系映射 【composite复合主键】关系映射【component组件】关系映射
hibernate 中文注解 中文版hibernate-annotations-3.4.0.CR1-doc.pdf