Hibernate注解配置步骤
1.导入相应的包,具体在项目中
2.创建hibernate.cfg.xml配置文件,具体如下,只需要更改相应的代码即可,目前采用的是mysql数据库
<?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"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/test</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- 相应的注解实体类 --> <mapping class="com.cc.entity.Grade"/> <mapping class="com.cc.entity.Student"/> </session-factory> </hibernate-configuration>
3.创建对应的实体类,此事例中是grade与student两个实体,一对多关系
package com.cc.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.OneToMany; @Entity public class Grade { private int gid; private String gname; private String gdesc; private Set<Student> students=new HashSet<Student>(); @OneToMany(mappedBy="grade",fetch=FetchType.LAZY, cascade={CascadeType.REMOVE,CascadeType.PERSIST}) public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } @Id public int getGid() { return gid; } public void setGid(int gid) { this.gid = gid; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public String getGdesc() { return gdesc; } public void setGdesc(String gdesc) { this.gdesc = gdesc; } }
package com.cc.entity; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Entity public class Student { private int sid; private String sname; private String sex; private Grade grade; //鍜岀彮绾т负澶氬涓�槧灏� public Student() { super(); // TODO Auto-generated constructor stub } public Student(String sname, String sex) { super(); this.sname = sname; this.sex = sex; } @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="GID") public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } @Id public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
注意:这里导的包全是javax包中的注解,如果导入的hibernate中的注解,会报出无法找到异常
4.测试代码,分别做了新增修改,和查询
package com.cc.test; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import com.cc.entity.Grade; import com.cc.entity.Student; public class Test extends HibernateUtil{ /** * 查询所有数据 */ public void findAll(){ // 创建session Session session=getSessionFactory().openSession(); Query query = session.createQuery("from Grade"); List<Grade> list = query.list(); for(Grade g : list){ System.out.print("班级名称:" + g.getGname()); Iterator it = g.getStudents().iterator(); while(it.hasNext()){ Student stu = (Student)it.next(); System.out.println("姓名:" + stu.getSname() + "性别:" + stu.getSex()); } } // 闭关session session.close(); } /** * 主表中添加数据 */ public void add(){ Session session=getSessionFactory().openSession(); // 创建grade对象 Grade grade = new Grade(); grade.setGname("一年四班"); Transaction transaction = session.beginTransaction(); session.saveOrUpdate(grade); transaction.commit(); session.close(); } /** * 子表中添加数据 */ public void addChild(){ Session session=getSessionFactory().openSession(); // 查询grade对象 Grade grade = (Grade)session.load(Grade.class, 3); // 创建student Student student = new Student(); student.setSname("王五"); student.setSex("女"); student.setGrade(grade); // 执行事务处理 Transaction transaction = session.beginTransaction(); session.saveOrUpdate(student); transaction.commit(); session.close(); } public static void main(String[] args){ Test t = new Test(); t.addChild(); } }
相关推荐
hibernate注解配置,有喜欢的朋友可以下载
Hibernate注解配置表映射实例
hibernate注解配置详解,有各个标签的详细使用方法,需要学习注解的不妨看一下
struts2、spring、hibernate整合,其中spring、hibernate使用全注解配置,一个简单的学习实例源码,可直接导入项目运行实例。
Hibernate4.0注解配置详解,Hibernate4.0注解配置详解,Hibernate4.0注解配置详解
hibernate 注解配置实例,次实例供学习hibernate注解配置的人学习之用。
Struts2 Spring3.0 Hibernate3.3 整合全注解配置用的数据库。
hibernate注解 1.级联关系 2.增删改查 3.二级缓存 4.日志配置 5.注解解析
Hibernate注解详细配置
针对hibernate关系映射进行了一个总结,包含xml配置形式和@注解配置形式,one-to-many,one-to-noe,many-to-one,many-to-many等单方向的配置和双方都配置的事例
详细介绍了ORM框架Hibernate的注解配置和xml配置。
使用hibernate的注解配置可以很好的完成跟实体的映射。而且还可以通过注解配置,可以完成多对一,一对多等关系的配置,非常好。
* @GenericGenerator —— 注解声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性 * name 指定生成器名称 * strategy 指定具体生成器的类名(指定生成策略)。 * parameters 得到strategy指定的...
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
在Hibernate中使用注解,...(3)在Hibernate主配置文件中无需指定映射文件了,但需要指定注解的实体类。(springboot这一步也省了) 注解的具体文档在javax.persistence包下的注解类型总结Annotation Type Summry中。
Struts2 Spring3.0 Hibernate3.3 全注解配置,避免了大量业务类在Spring文件的配置,整合了DWR3.0,displayTag 物理分页技术的实现。树形菜单。 另外数据库,在下一个资源;由于20MB的限制。 有问题的话留言。
spring mvc +hibernate注解版测试增,删,改,查 简单xml配置应用