`

Hibernate 注解配置

    博客分类:
  • JAVA
 
阅读更多

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();
	}
}

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics