hibernate的环境搭建(以一个小例子讲解)

来源:互联网 发布:淘宝企业店铺入口 编辑:程序博客网 时间:2024/05/14 11:29

                                               以Person类为例

一.导入jar包


二.在根目录下(即src目录下)写一个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 代表一个数据库的描述-->    <session-factory>        <!--链接数据库的url-->        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>        <!--链接数据库的驱动-->        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!--链接数据库的用户名-->        <property name="hibernate.connection.username">root</property>        <!--链接数据库的密码-->        <property name="hibernate.connection.password">root</property>        <!--方言 告诉hibernate用什么数据库,将来会生成什么样的sql语句-->        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <!--               hibernate对表的策略      validate  在hibernate容器启动的时候,根据映射文件和持久化类校验表      create    每次当hibernate启动的时候,都会根据持久化类和映射文件创建表      create-drop  每次当hibernate启动的时候,都会根据持久化类和映射文件创建表,销毁的时候删除表      update  检查,如果和映射文件不一致,则更新表的结构,如果没有表,则会创建表        -->        <property name="hbm2ddl.auto">update</property>        <property name="show_sql">true</property>        <property name="format_sql">true</property>        <mapping resource="domain/Person.hbm.xml"/>    </session-factory></hibernate-configuration>
三.持久化类

package domain;/** * * Created by wangxinqi  on 2016/12/20. * 持久化类 */public class Person {    private long id;    private  String name;    private String sex;    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 String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}
四.在类的同包下写一个映射文件(一般是 类名.hbm.xml)以此例就是Person.hbm.xml

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>    <!--    class元素 代表持久化类       name属性为类的全名       table属性为表的名字 默认值是类名       catlog属性 为数据库的名字    -->   <class name="domain.Person" table="Person">       <!--         id为元素主键           name 标示符属性           length 数据库中id的长度           column id属性对于的字段           type 类型       -->       <id name="id" length="5" column="id" type="java.lang.Long">           <!--            主键的产生器              需要通过什么样的方式产生主键          -->           <generator class="increment"></generator>       </id>       <!--         代表一般的属性       -->       <property name="name" type="java.lang.String" length="20"></property>       <property name="sex" type="java.lang.String" length="20"></property>   </class></hibernate-mapping>
五.测试及验证

/** * Created by Administrator on 2016/12/20. * 完成crud的操作 */public class CRUDtest {   /**   * 建表测试   * */   @Test    public  void  creatTableTest(){            Configuration configuration=new Configuration();            configuration.configure();            configuration.buildSessionFactory();    }    /**     * 增加数据     * */    @Test    public void  testSave(){        //创建Configuration实例        Configuration configuration =new Configuration();        //加载hibernate.cfg.xml文件        configuration.configure();        //创建sessionFactory相当于数据源        SessionFactory sessionFactory= configuration.buildSessionFactory();//也可以理解为session工厂       //保存操作是由session来完成的 openSession 方法相当于利用session打开了一个数据库的连接        Session session=sessionFactory.openSession();//开启session(连接) 一个数据库连接对象 就一个seesion        //hibernate的事务默认是关闭的,必须手动开启 ,可以保证数据的安全性        Transaction transaction=session.beginTransaction();        Person person=new Person();//临时状态        person.setName("王新起");//临时状态        person.setSex("男");//临时状态        session.save(person);//把一个对象转化为持久化状态        //提交事务        transaction.commit();        //相当于关闭了连接        session.close();    }    /**     * 查询所有的person对象     * 查询操作不需要开启事务     * */    @Test    public  void  testQueryAllPerson(){        Configuration configuration =new Configuration();        configuration.configure();        SessionFactory sessionFactory=configuration.buildSessionFactory();        Session session=sessionFactory.openSession();//        List<Person> persons = session.createQuery("from Person").list();        List<Person> persons =session.createQuery("from Person ").list();        for (Person person :persons){            System.out.print(person.getName()+":"+person.getSex());        }        session.close();    }    /**     * 根据主键查询其中的一条数据     * */    @Test    public void testPersonById(){        Configuration configuration=new Configuration();        configuration.configure();        SessionFactory sessionFactory=configuration.buildSessionFactory();        Session session=sessionFactory.openSession();        Person person=session.get(Person.class,1L);        System.out.print(person.getName());        session.close();    }    /**     * 修改     * */    @Test    public  void  testUpdate(){        Configuration configuration =new Configuration();        configuration.configure();        SessionFactory sessionFactory=configuration.buildSessionFactory();        Session session=sessionFactory.openSession();        Transaction transaction =session.beginTransaction();        // 先拿到  再修改  再更新        Person person=session.get(Person.class,1L);        person.setName("王帅起");        session.update(person);        transaction.commit();        session.close();    }    /**     * 删除     * */    @Test    public  void  testDelete(){        Configuration configuration =new Configuration();        configuration.configure();        SessionFactory sessionFactory=configuration.buildSessionFactory();        Session session =sessionFactory.openSession();        Transaction transaction =session.beginTransaction();        //先拿到 再删除        Person person =session.get(Person.class,1L);        session.delete(person);        transaction.commit();        session.close();    }}


1 0
原创粉丝点击