zoukankan      html  css  js  c++  java
  • hibernate课程 初探单表映射3-5 hibernate增删改查

    本节简介:

    1    增删改查写法

    2    查询load和查询get方法的区别

    3    demo

    1    增删改查写法

    增加   session.save()

    修改   session.update()

    删除   session.delete()

    查询   session.get()/session.load()

    2    查询load和查询get方法的区别

    a  get 不考虑缓存情况下,get会在调用之后立即向数据库发送sql语句,返回持久化对象。load 是调用后返回代理对象,该代理对象只保存实体对象id,只有使用对象非主键属性才发出sql语句。

    b  查询不存在的数据,get返回null,load抛出异常。

    3    demo

    hibernate.cfg.xml

    <?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/bendi</property>
         <property name="connection.username">root</property>
         <property name="connection.password"></property>
         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
         
         <property name="show_sql">true</property>
         <property name="format_sql">true</property>
         <property name="hbm2ddl.auto">update</property>
      
      <mapping resource = "Student.hbm.xml"/>     
        </session-factory>
    </hibernate-configuration>

    Student.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 2017-12-20 0:42:12 by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
        <class name="com.ddwei.student.Student" table="STUDENT">
            <id name="pid" type="int">
                <column name="PID" />
                <generator class="increment" />
            </id>
            <property name="name" type="java.lang.String">
                <column name="NAME" />
            </property>
            <property name="sex" type="java.lang.String">
                <column name="SEX" />
            </property>
            <property name="birthday" type="date">
    <!--         <property name="birthday" type="time"> -->
    <!--         <property name="birthday" type="timestamp"> -->
                <column name="BIRTHDAY" />
            </property>
    <!--         <property name="address" type="java.lang.String"> -->
    <!--             <column name="ADDRESS" /> -->
    <!--         </property> -->
            <property name="picture" type="java.sql.Blob">
                <column name="Picture" />
            </property>
            <component name="address" class="com.ddwei.student.Address">
             <property name="postcode" column="POSTCODE"/>
             <property name="phone" column="PHONE"/>
             <property name="address" column="ADDRESS"/>
            </component>
           
        </class>
    </hibernate-mapping>

    StudentTest.java

    package hibernate_001;

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.SQLException; import java.util.Date;

    import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;

    import com.ddwei.student.Address; import com.ddwei.student.Student;

    public class StudentTest {    private SessionFactory sessionFactory;  private Session session;  private Transaction trasaction;    @Test  public void testSaveStudent(){ //  Student student =new Student(1,"周恩来","男",new Date(),"绍兴");//创建学生对象   Student student = new Student();   student.setName("秦始皇");   student.setSex("男");   student.setBirthday(new Date()); //  student.setAddress("阿房宫");   Address address = new Address("105789","18912345678","河北敦煌教区");   student.setAddress(address);   session.save(student);//会话保存学生对象进入数据库  }      @Test  //测试修改记录  public void testUpdate(){   Student student = (Student) session.get(Student.class, 1);   student.setBirthday(new Date());   session.update(student);  }    @Test  //测试查询记录  public void testLoad(){   Student student = (Student) session.load(Student.class, 1);   String aaa = student.getName();   System.out.println("student1="+aaa);  }    @Test  //测试查询记录  public void testGet(){   Student student = (Student) session.get(Student.class, 1);   System.out.println("student2="+student);

     }    @Test  //测试删除记录  public void testDelete(){   Student student = (Student) session.get(Student.class, 1);   session.delete(student);     }                                                    @Before  public void init(){   //1  创建配置对象   Configuration config = new Configuration().configure();   //2  创建服务对象   ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();      //3  创建会话工厂   sessionFactory = config.buildSessionFactory(serviceRe);      //4  打开会话   session = sessionFactory.openSession();   //5  创建事务   trasaction = session.beginTransaction();  }      @After  public void destroy(){   trasaction.commit();   session.close();   sessionFactory.close();  }  

    }

    Student.java

    package com.ddwei.student;

    import java.sql.Blob; import java.util.Date;

    public class Student {

     // java beans 的设计原则  /**   * 1 公有的类 2 共有不带参数构造方法 3 私有属性 4 属性setter/getter方法   */

     private int pid;// 学号  private String name;// 姓名  private String sex;// 性别  private Date birthday;// 出生日期  private Address address;// 家庭地址  private Blob picture;//相片

     public Student() {

     }

     public Student(int pid, String name, String sex, Date birthday) {   // super();   this.pid = pid;   this.name = name;   this.sex = sex;   this.birthday = birthday; //  this.address = address;  }

     @Override  public String toString() {   return "Student [pid=" + pid + ", name=" + name + ", sex=" + sex     + ", birthday=" + birthday + ", address=" + address + "]";  }

     public int getPid() {   return pid;  }

     public void setPid(int pid) {   this.pid = pid;  }

     public Date getBirthday() {   return birthday;  }

     public void setBirthday(Date birthday) {   this.birthday = birthday;  }

       public Address getAddress() {   return address;  }

     public void setAddress(Address address) {   this.address = address;  }

     public String getName() {   return name;  }

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

     public String getSex() {   return sex;  }

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

     public Blob getPicture() {   return picture;  }

     public void setPicture(Blob picture) {   this.picture = picture;  }

         

    }

    Address.java

    package com.ddwei.student;

    //地址类 public class Address {    private String postcode;//邮编  private String phone;//电话  private String address;//地址    public String getPostcode() {   return postcode;  }  public void setPostcode(String postcode) {   this.postcode = postcode;  }  public String getPhone() {   return phone;  }  public void setPhone(String phone) {   this.phone = phone;  }  public String getAddress() {   return address;  }  public void setAddress(String address) {   this.address = address;  }    //无参构造方法  public Address(){     }        //有参构造方法  public Address(String postcode, String phone, String address) {   super();   this.postcode = postcode;   this.phone = phone;   this.address = address;  } }

     

  • 相关阅读:
    LeetCode 712. Minimum ASCII Delete Sum for Two Strings
    LeetCode 1143. Longest Common Subsequence
    LeetCode 334. Increasing Triplet Subsequence
    Atom支持Markdown和Latex
    使用pudb调试python
    Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
    Window7下安装Ubuntu 14.04 64bit
    Cnblogs支持Latex及测试
    Caffe学习笔记1--Ubuntu 14.04 64bit caffe安装
    g++编译流程
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/8271220.html
Copyright © 2011-2022 走看看