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注解配置步骤及实体类定义方法,并通过示例演示如何进行数据的新增、修改与查询操作。
4037

被折叠的 条评论
为什么被折叠?



