小白实验室-Hibernate:one2one映射

配置文件

对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: 1
public 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: 1
public 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();
}

工程文件点击下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值