博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Hibernate 之 CRUD 操作
阅读量:6431 次
发布时间:2019-06-23

本文共 9252 字,大约阅读时间需要 30 分钟。

  hot3.png

CRUD是指在做计算处理时的增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类:
package com.oumyye.model;public class Student {    private long id;    private String name;    private Class c;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Class getC() {        return c;    }    public void setC(Class c) {        this.c = c;    }    @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + "]";    }}
package com.oumyye.model;import java.util.HashSet;import java.util.Set;public class Class {    private long id;    private String name;    private Set
students=new HashSet
(); public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
getStudents() { return students; } public void setStudents(Set
students) { this.students = students; }}
映射文件: Student.hbm.xml
Class.hbm.xml
工具类:可以有myeclipse生成
package com.oumyye.util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.cfg.Configuration;import org.hibernate.cfg.AnnotationConfiguration;/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution.  Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */public class HibernateSessionFactory {    /**      * Location of hibernate.cfg.xml file.     * Location should be on the classpath as Hibernate uses       * #resourceAsStream style lookup for its configuration file.      * The default classpath location of the hibernate config file is      * in the default package. Use #setConfigFile() to update      * the location of the configuration file for the current session.        */    private static final ThreadLocal
threadLocal = new ThreadLocal
(); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new AnnotationConfiguration(); private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the
SessionFactory if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; }}
配置文件hibernate.cfg.xml
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/mytest
root
root
org.hibernate.dialect.MySQL5Dialect
true
update
测试类
package com.oumyye.service;import java.util.Iterator;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.oumyye.model.Class;import com.oumyye.model.Student;import com.oumyye.util.HibernateSessionFactory;public class StudentTest {    private SessionFactory sessionFactory=HibernateSessionFactory.getSessionFactory();    private Session session;    @Before    public void setUp() throws Exception {        session=sessionFactory.openSession(); // 生成一个session        session.beginTransaction(); // 开启事务    }    @After    public void tearDown() throws Exception {         session.getTransaction().commit(); // 提交事务         session.close(); // 关闭session    }    @Test    public void testSaveClassAndStudent() {        Class c=new Class();        c.setName("08计本");        Student s1=new Student();        s1.setName("张三");        s1.setC(c);        Student s2=new Student();        s2.setName("李四");        s2.setC(c);        session.save(s1);        session.save(s2);    }    @Test    public void testLoadClass(){        // Class c=(Class)session.load(Class.class, Long.valueOf(2));        Class c=(Class)session.load(Class.class, Long.valueOf(1));        System.out.println(c.getStudents());    }    @Test    public void testGetClass(){        // Class c=(Class)session.get(Class.class, Long.valueOf(2));        Class c=(Class)session.get(Class.class, Long.valueOf(1));        System.out.println(c.getStudents());    }    @Test    public void testUpdateClass(){        Session session1=sessionFactory.openSession();        session1.beginTransaction();        Class c=(Class)session1.get(Class.class, Long.valueOf(1));        session1.getTransaction().commit(); // 提交事务        session1.close();        Session session2=sessionFactory.openSession();        session2.beginTransaction();        c.setName("08计算机本科2");        session2.update(c);        session2.getTransaction().commit(); // 提交事务        session2.close();    }    //
@Test public void testSaveOrUpdateClass(){ Session session1=sessionFactory.openSession(); session1.beginTransaction(); Class c=(Class)session1.get(Class.class, Long.valueOf(1)); session1.getTransaction().commit(); // 提交事务 session1.close(); Session session2=sessionFactory.openSession(); session2.beginTransaction(); c.setName("08计算机本科3"); Class c2=new Class(); c2.setName("09计算机本科3"); session2.saveOrUpdate(c); session2.saveOrUpdate(c2); session2.getTransaction().commit(); // 提交事务 session2.close(); } @Test public void testMergeClass(){ Session session1=sessionFactory.openSession(); session1.beginTransaction(); Class c=(Class)session1.get(Class.class, Long.valueOf(1)); session1.getTransaction().commit(); // 提交事务 session1.close(); Session session2=sessionFactory.openSession(); session2.beginTransaction(); Class c2=(Class)session2.get(Class.class, Long.valueOf(1)); c.setName("08计算机本科4"); session2.merge(c); session2.getTransaction().commit(); // 提交事务 session2.close(); } //
@Test public void testDeleteStudent(){ Student student=(Student)session.load(Student.class, Long.valueOf(1)); session.delete(student); }}

Session的入门常用方法

  • Query query = session.createQuery(hql):利用hql查询语句查询;
  • Criteria critera = session.createCriteria(Class clazz);
  • (3)Transaction tx = session.beginTransaction();     //开始事务;tx.commit()提交事务;
  • session.close();//关闭Session,此后被session管理的持久化对象变为脱管状态;
  • session.save(Object obj);    //添加
  • session.update(Object obj);     //更新
  • session.delete(Object obj);    //删除
  • Object obj = session.get(Class clazz,Serialiazble id);    //根据主键查找记录并返回;
  • Object obj = session.load(Class clazz,Serializable id);    //和get方法效果一样,但是是懒加载,即在不使用他之前他不会返回对象;
来源:

转载于:https://my.oschina.net/ecp/blog/635442

你可能感兴趣的文章
Eclipse+kafka集群 实例源码
查看>>
Vijos 1067Warcraft III 守望者的烦恼
查看>>
LinkedList
查看>>
Python number
查看>>
【Lv1-Lesson008】A Guide to Birthdays
查看>>
MySQL_PHP学习笔记_2015.04.19_PHP连接数据库
查看>>
juery 选择器 选择多个元素
查看>>
【新手向】TensorFlow 安装教程:RK3399上运行谷歌人工智能
查看>>
Oracle Net Configuration(监听程序和网络服务配置)
查看>>
c语言_判断例子
查看>>
ubuntu重启不清除 /tmp 设置
查看>>
面向对象
查看>>
JSON
查看>>
SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限
查看>>
16.Python网络爬虫之Scrapy框架(CrawlSpider)
查看>>
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>
程序制作 代写程序 软件定制 代写Assignment 网络IT支持服务
查看>>
mysql 案例~select引起的性能问题
查看>>
直接读取图层
查看>>