Hibernate學習系列————註解一對多單向實例

開發環境:Mysql+Eclipsejava

 

一對多單向的列子原理:一個班級,多個學生,學生端爲多的一端,他們擁有一個外鍵指向相同的班級。mysql

 

項目結構sql

須要的jar包數據庫

 

hibernate.cfg.xmlsession

    <!-- 配置mysql數據庫的鏈接參數 -->
        
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <!-- 驅動程序名 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 自動建立表 -->
            <property name="hbm2ddl.auto">update</property>
            <!-- 控制檯打印sql語句 -->
            <property name="show_sql">true</property> 
            <!-- 數據庫名 -->
            <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
            <!-- 用戶名 -->
            <property name="hibernate.connection.username">root</property>
            <!-- 密碼 -->
            <property name="hibernate.connection.password"></property>
            <!-- 對應的實體 -->
            <mapping class="cn.dao.Classes"/>
            <mapping class="cn.dao.Student"/>
    </session-factory>app

實體類:ide

  1. Classes.java

package cn.dao;工具

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;測試

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;fetch

@Entity
@Table(name = "classes")
public class Classes implements Serializable {

    private Long id;

    private String name;

    private String desc;

    private Set<Student> students = new HashSet<Student>();

    @Id
    @Column(name = "cid")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(name = "cname")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name = "cdesc")
    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
    @JoinColumn(name = "cid")
    public Set<Student> getStudents() {
        return students;
    }

    public void setStudents(Set<Student> students) {
        this.students = students;
    }

    //測試打印
    @Override
    public String toString() {
        return "Classes [id=" + id + ", name=" + name + ", desc=" + desc + ", students=" + students + "]";
    }

}


2.Student.java

package cn.dao;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "student")
public class Student implements Serializable {
    
    private Long id;
    
    private String name;
    
    private String sex;
    
    @Id
    @Column(name = "sid")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(name = "sname")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    @Column(name = "sex")
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    
    
}
 

建立一個打開session的工具類:HibernateUtil

package cn.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static SessionFactory sessionFactory;
    private static Session session;

    static {
        // 讀取Hibernate的配置文件,進行初始化的操做
        Configuration config = new Configuration().configure();
        StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(config.getProperties());
        StandardServiceRegistry registry = ssrb.build();
        sessionFactory = config.buildSessionFactory(registry);
    }

    /**
     * 獲取SessionFactory
     */

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    /**
     * 獲取session
     */

    public static Session getSession() {
        return sessionFactory.openSession();
    }

    /**
     * 關閉session
     */

    public static void closeSession() {
        if (session != null) {
            session.close();
        }
    }
}

 

最後一個測試,實現簡單的增刪改查功能:OneToMany.java

package cn.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.dao.Classes;
import cn.dao.Student;
import cn.utils.HibernateUtil;

/**
 * 單向的一對多關聯操做
 * 
 * @author hasee
 *
 */
public class OneToMany {
    
    public static void main(String[] args) {
         query();
    }

    public static void save() {
        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        Classes classes = new Classes();
        classes.setName("ClassOne");
        classes.setDesc("This is ClassOne");
        Set<Student> students = new HashSet<Student>();
        Student student = new Student();
        student.setName("Mike");
        student.setSex("boy");
        students.add(student);
        classes.setStudents(students);
        session.save(classes);
        transaction.commit();
        HibernateUtil.closeSession();
    }

    public static void edit(){         Session session = HibernateUtil.getSession();         Transaction transaction = session.beginTransaction();         Classes classes = (Classes) session.get(Classes.class, 1L);         Set<Student> students = classes.getStudents();         for (Student student : students) {             student.setName("Jary");         }         transaction.commit();         HibernateUtil.closeSession();     }          public static void delete(){         Session session = HibernateUtil.getSession();         Transaction transaction = session.beginTransaction();         Classes classes = (Classes) session.get(Classes.class, 1L);         session.delete(classes);         transaction.commit();         HibernateUtil.closeSession();              }          public static void query(){         Session session = HibernateUtil.getSession();         Query query = session.createQuery("from Classes");         List<Classes> list = query.list();         for (Classes classes : list) {             System.out.println(classes.toString());         }     } }  

相關文章
相關標籤/搜索