小白实验室-Hibernate:one2one映射

来源:互联网 发布:淘宝怎么用照片找同款 编辑:程序博客网 时间:2024/05/29 08:06

配置文件

对Hibernate的全局参数进行配置,主要是配置连接的数据库的相关信息和关系对象映射文件的路径等。

实体

JavaBean对象实体,这里是StudentBean。

映射文件

这个是本次实验的关键点1。
其实简单的理解就是,一个JavaBean对应数据库中的那张表,一个JavaBean中的属性对应数据库中的那个列。都是在这里说明的。然后有一点需要注意的是,这里要说明id的生成策略是什么。参见代码:

<hibernate-mapping>    <class name="cn.example.bean.StudentBean" table="student">        <id name="id">            <generator class="native"></generator>        </id>        <property name="name"></property>        <property name="birthday" column="birth"></property>    </class></hibernate-mapping>

工具类

编写了一个简单的工具类,在工具类中可以体现各个类之间的生命周期。简要介绍一下生命周期:
读取配置(执行一次)-获取工厂对象(执行一次)-获取会话(重复执行)-执行会话(重复执行)-关闭会话(重复执行)
配置类Configuration只需要读取一次,使用后即可废弃。所以我们可以卸载静态块中。另外一个重要的类就是SessionFactory。这个类的作用是获取会话对象,所以他要一直存在,可以作为工具类的属性。然后就是Seesion,因为每次使用完成后需要关闭,所以也可以写在工具类的属性中。
提供了2个方法

//获取session,同时也开启事务public static Session getSession(){    session = sessionFactory.openSession();    tansaction = session.beginTransaction();    return session;}public static void closeSession(){    tansaction.commit();    session.close();}

测试

最后是测试,主要是对增删改查的API进行熟悉

//增public static void addStudent(){    StudentBean stu = new StudentBean("张三", new Date(0));    Session session = HibernateUtil.getSession();    session.save(stu);    HibernateUtil.closeSession();}

//删//虽然是传入的对象,但是是按照id删除//并且,如果表中没有该id的数据,会抛出错误//Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1public static void deletStudent(){    Session session = HibernateUtil.getSession();    StudentBean stu = new StudentBean();    stu.setId(3);    session.delete(stu);;    HibernateUtil.closeSession();}

//改//同样按照id进行修改//并且,如果表中没有该id的数据,会抛出错误//Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1public static void updateStudent(){    Session session = HibernateUtil.getSession();    StudentBean stu = new StudentBean();    stu.setId(3);    session.update(stu);    HibernateUtil.closeSession();}

//查//同样是按照id查找//如果没有该id返回null值public static void selectStudent(){    Session session = HibernateUtil.getSession();    StudentBean stu = (StudentBean) session.get(StudentBean.class, 1);    System.out.println(stu);    HibernateUtil.closeSession();}

工程文件点击下载

原创粉丝点击