日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate学习系列————注解一对多单向实例

發(fā)布時間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate学习系列————注解一对多单向实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

開發(fā)環(huán)境:Mysql+Eclipse

?

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

?

項目結構

需要的jar包

?

hibernate.cfg.xml

?? ?<!-- 配置mysql數(shù)據庫的連接參數(shù) -->
?? ??? ?
?? ??? ??? ?<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
?? ??? ??? ?<!-- 驅動程序名 -->
?? ??? ??? ?<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
?? ??? ??? ?<!-- 自動創(chuàng)建表 -->
?? ??? ??? ?<property name="hbm2ddl.auto">update</property>
?? ??? ??? ?<!-- 控制臺打印sql語句 -->
?? ??? ??? ?<property name="show_sql">true</property>?
?? ??? ??? ?<!-- 數(shù)據庫名 -->
?? ??? ??? ?<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>

實體類:

  • 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;

    @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;
    ?? ?}
    ?? ?
    ?? ?
    }
    ?

    創(chuàng)建一個打開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();
    ?? ??? ?}
    ?? ?}
    }

    ?

    最后一個測試,實現(xiàn)簡單的增刪改查功能: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;

    /**
    ?* 單向的一對多關聯(lián)操作
    ?*?
    ?* @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());
    ?? ??? ?}
    ?? ?}
    }
    ?

    轉載于:https://my.oschina.net/u/2509896/blog/759316

    總結

    以上是生活随笔為你收集整理的Hibernate学习系列————注解一对多单向实例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。