Hibernate简单例子步骤和自己的心得

简单的Hibernate例子详细步骤和自己的心得

1.第一步:建一个web project,注意如果web.xml配置文件不是自动添加,需要点击Next手动添加


2.第二步:导入Hibernate相关jar包


3.第三步:在数据库中建立数据表,在这里以学生表student表为例,以下同是

注意:在这里为了避免麻烦,属性类型都设置成了字符串类型

create table student
(
       student_id nvarchar2(20) not null,
       student_name nvarchar2(10) not null,
       student_age nvarchar2(4) not null,
       constraint PK_STUDENT primary key (student_id)

);

截图如下:


4.第四步:先新建两个xml配置文件(hibernate.cfg.xml和Student.hbm.xml),写实体类,将数据库中表的属性定义成实体类的私有属性,并用get、set方法对属性值进行设置、获取

注意:① 为了避免出错,我的实体类中的私有属性的属性名和数据库中的字段名是一样的;

          ② hibernate.cfg.xml是写在src路径下的,而student.hbm.xml是写在和实体类同包名同路径下的。


实体类截图如下:


5.第五步:配置student.hbm.xml映射文件,提供将对象的持久化到关系型数据库中相关信息(简单理解就是将实体类和数据库中表的字段信息进行连接匹配)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.vo"><!-- 包名 -->
<!-- name是类名,table是数据库中的表名 -->
<class name="Student" table="student">
<!-- name是Student类中的属性,column是数据库中表的字段名 -->
<id name="student_id" column="student_id">
 <!-- 外部控制主键生成 -->
 <generator class="assigned"/> 
</id>
<!-- 使用property标签来映射 -->
<property name="student_name" column="student_name" type="string" />
<property name="student_age" column="student_age" type="string"></property>
</class>

</hibernate-mapping>

注意:实体类中有几个属性就要写几个<property>标签,我当时就是遇到这个问题,落写了一个属性,结果后期用JUnit测试运行的时候就一直报错

6.第六步:配置hibernate.cfg.xml配置文件,它包含了连接持久化层与映射文件所需的基本信息

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 指定方言 -->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<!-- 数据库驱动 -->
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<!-- 连接数据库的url -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 连接数据库的用户名 -->
<property name="connection.username">sjz</property>
<!-- 连接数据库的密码 -->
<property name="connection.password">456852</property>
<!-- 显示SQL语句 -->
<property name="show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="format_sql">true</property>
<!-- 用来配置hbm配置文件 -->
<mapping resource="com/hibernate/vo/Student.hbm.xml"/>
</session-factory>

</hibernate-configuration>

注意:① 我用的开发工具是PL/SQL ,它是专门开发面向Oracle数据库的开发环境,因此在配置文件中的链接数据库的url应该是                链接Oracle的;

          ② 注意用户名和密码一定要写自己注册的用户名和密码,不要写错

7.第七步:从第七步开始即将实现简单的增删改查的功能,都是通过新建一个测试类,引用JUnit进行测试,我将这四个功能写在了一个测试类中,代码如下:

注意:一开始我是按照步骤一步一步的写,当我写到下一个功能的时候,发现前面的步骤是一样的就可以将同样的步骤拿出来,写成一个静态方法,用的时候直接调用即可

注意:怎么引用JUnit,截图如下:

① 先右键单击项目名称,然后选择,Build Path ,然后继续点击找到Add Library选项,有的MyEclipce版本可以直接找到该选项:


②选择JUnit,点击Next


③ 选择JUnit 4,点击finish即可


注意:在测试类中使用JUnit需要引包才能使用

package com.hibernate.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
import com.hibernate.vo.Student;

public class HibernateTest {
private static Configuration config ;
private static ServiceRegistry service;
private static SessionFactory sessionFactory;
private static Session session;
private static Transaction transaction;

public static void loadTransaction(){
//[1]加载hibernate.cfg.xml配置文件
config = new Configuration().configure();
service = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//[2]获取SessionFactory
sessionFactory = config.buildSessionFactory(service);
//[3]得到一个Session
session = sessionFactory.openSession();
//[4]开启事务
transaction = session.beginTransaction();
}

//添加学生信息
@Test
public void insertTest(){
loadTransaction();
//[5]操作数据,创建对象并赋值
Student student = new Student();
student.setStudent_id("1514010618");
student.setStudent_name("时嘉泽");
student.setStudent_age("22");
//[6]将数据存储到数据库的表中
session.save(student);
//[7]提交事务
transaction.commit();
//[8]关闭资源
session.close();
sessionFactory.close();
}

//修改学生信息
@Test
public void modifyTest(){
loadTransaction();
//[5]操作数据,创建对象并赋值
Student student = new Student();
student.setStudent_id("1514010618");
student.setStudent_name("时大泽");
student.setStudent_age("20");
//[6]将数据存储到数据库的表中
session.update(student);
//[7]提交事务
transaction.commit();
//[8]关闭资源
session.close();
sessionFactory.close();
}

//按照学号查找学生信息
@Test
public void searchStudentByIdTest(){
loadTransaction();
//在hibernate中根据student_id查找操作
Student student = (Student) session.get(Student.class, "1514010618");
System.out.println("--------------------------");
System.out.println("学号:" + student.getStudent_id());
System.out.println("姓名:" + student.getStudent_name());
System.out.println("年龄:" + student.getStudent_age());
System.out.println("--------------------------");
transaction.commit();
session.close();
sessionFactory.close();
}

//按照学号删除学生信息
@Test
public void deleteStudentByIdTest(){
loadTransaction();
//先查询,后删除
Student student = (Student) session.get(Student.class, "1514010618");
session.delete(student);
transaction.commit();
session.close();
sessionFactory.close();
}

}

注意:当代码写完开始运行的时候,此时就可以使用我们引用的JUnit测试,步骤如下:

选中你想运行的那个方法的方法名,右键单击,选择Run As 选项,然后选择JUnit即可运行该方法,也可以通过快捷键来Alt+Shift+T运行,截图如下:


运行结果截图如下:

① 添加学生信息截图:


② 修改学生信息截图:


③ 查询学生信息截图:此功能是在控制台进行输出


④ 删除学生信息截图:


注意:

① 以按照学号查询学生信息为例:Student student = (Student) session.get(Student.class, "1514010618");这行代码是Hibernate根据学号student_id来查找操作的,可以用session.get()方法也可以用session.load()方法,最后要强制转换类型。

双引号中写的是你要查找的那个学生的学号,我当时忘了写只写了 1,运行的时候报空指针的错误。

② 一定要注意映射文件和配置文件新建的位置,一定要注意配置文件中路径不要写错


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值