说实话hibernate配置与使用随便百度一下都很多,但对于新手来说还是存在很多问题,我就是那个在网上复制代码然后运行,随后各种异常出现,配了很久才搞定,所以记录下
一、为什么我们要使用hibernate
hibernate用于访问数据库,我们直接通过Java类来操作数据库,是对JDBC的轻量级的对象封装,它是一个独立的对象持久层框架
二、hibernate 配置
1、下载hibernate依赖包 下载地址hibernate
解压hibernate压缩包选择required包
3、在SRC下新建hibernate.cfg.xml文件
4、SRC下新建实体映射文件
三、通过实体类操作数据库
实体类属性需对应数据库字段
1、新建实体类
2、获取事物
Configuration cfg=new Configuration(); cfg.configure("hibernate.cfg.xml");//populates the data of the configuration file //creating seession factory object SessionFactory factory=cfg.buildSessionFactory(); //creating session object Session session=factory.openSession(); //creating transaction object Transaction t=session.beginTransaction();
3、操作数据库
1)、添加数据
2)、删除数据
注:参数二为int类型,如果表中存在多个相同ID会抛出org.hibernate.jdbc.BatchedTooManyRowsAffectedException
方式二:Employee e1=new Employee();
e1.setId(0);
session.delete(e1);
3)、更新数据
方式一:
Employee e1=new Employee();
e1.setId(1);
e1.setFirstName("121");
session.update(e1);;
方式二:
Employee user = (Employee )session.load(User.class,1);
user.setName("周日");
session.update(user);
4)、查询数据
方式一:全部查询查询
Query query=session.createQuery("from Employee");
List user=query.list();
for(int i=0;i<user.size();i++){
Employee emp= (Employee)user.get(i);
System.out.println("id="+e.getId() + "firstName="+e.getFirstName());
}
注:session.createQuery("from Employee"); 参数Employee为所对应的实体类而不是数据库表
方式二:分页查询
Query query=session.createQuery("from Employee"); //
query.setFirstResult(10);//开始行( 0开始)
query.setMaxResults(14);//结束行
List user=query.list();
for(int i=0;i<user.size();i++){
Employee emp= (Employee)user.get(i);
System.out.println("id="+e.getId() + "firstName="+e.getFirstName());
}