Hibernate快速入门案例——手动修改和删除记录

来源:互联网 发布:tm域名有必要注册吗 编辑:程序博客网 时间:2024/06/18 09:46
 SessionFactory的封装
SessionFactory应用场景
2 代码
package com.cakin.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;//在使用hibernate开发项目时,请一定保证只有一个SessionFactory//一个数据库对应一个SessionFactoryfinal public class MySessionFactory {        private static SessionFactory sessionFactory=null;        private MySessionFactory(){        }        static{                sessionFactory=new Configuration().configure().buildSessionFactory();        }        public static SessionFactory getSessionFactory(){                return sessionFactory;        }}



二 测试代码优化
1 代码和数据库对照图
2 代码
package com.cakin.view;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import com.cakin.domain.Employee;import com.cakin.util.MySessionFactory;public class TestMain {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        //查询【load】->hql语法(hibernate query language)        delEmp();    }    private static void delEmp() {        //删除        Session session=MySessionFactory.getSessionFactory().openSession();        Transaction transaction=session.beginTransaction();        //先获取该雇员        Employee employee =(Employee)session.load(Employee.class, 1);//select语句        session.delete(employee);        transaction.commit();        session.close();    }    private static void updateEmp() {        //修改用户        //获取一个会话        Session session=MySessionFactory.getSessionFactory().openSession();        Transaction transaction=session.beginTransaction();        //修改用户        //1、获取要修改的用户        //load是通过主键属性,获取对象实例<-------->表的记录对应        Employee employee =(Employee)session.load(Employee.class, 1);//select语句        //2、修改        employee.setName("xiaoming");//update        employee.setEmail("abc@22.com");        transaction.commit();        session.close();    }    private static void addEmployee() {        //我们使用对hibernate完成crud操作,只里只见对象,不见表        // 现在我们不用service,直接测试        //1、创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化        Configuration configuration = new Configuration().configure();        //2、创建SessionFactory,这是一个会话工厂,是一个重量级的对象        SessionFactory sessionFactory=configuration.buildSessionFactory();        //3、创建Session,向当于jdbc的Connection        Session session = sessionFactory.openSession();        //4、要求程序员在进行增删改的时候使用事务提交,否则不生效        Transaction transaction=session.beginTransaction();        //添加一个雇员        Employee employee = new Employee();        employee.setName("cakin");        employee.setEmail("cakin@qq.com");        employee.setHiredate(new Date());        //保存        session.save(employee); //inert into ...[被hibernate封装]        transaction.commit();        session.close();    }}


三 domain类增加序列化
package com.cakin.domain;/* * 建议我们的domain对象的名称就是对应表的首字母大写 * domain、javabean、pojo【plain old/ordinary java object 简单的java对象】 * 该pojo按照规范应该序列化,目的是可以唯一的标识该对象,同时可以在网络和文件传输 */public class Employee implements java.io.Serializable{        /**         *         */        private static final long serialVersionUID = 1L;        private Integer id;        private String name;        private String email;        private java.util.Date hiredate;        public Integer getId() {                return id;        }        public void setId(Integer id) {                this.id = id;        }        public String getName() {                return name;        }        public void setName(String name) {                this.name = name;        }        public String getEmail() {                return email;        }        public void setEmail(String email) {                this.email = email;        }        public java.util.Date getHiredate() {                return hiredate;        }        public void setHiredate(java.util.Date hiredate) {                this.hiredate = hiredate;        }   }


原创粉丝点击