Hibernate框架学习

User user = new User();
        user.setId(1);
        user.setUsername("admin");
        user.setPassword("admin");

User user = new User();
user.setId(2);

// delete
session.delete(user);

User user = new User();
user.setId(2);
user.setUsername("user1");
user.setPassword("123-user");

// update
session.update(user);

工具类

将重复代码块包装成工具类,方便使用。

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import table.StudentEntity;

import java.util.Properties;

public class Main {
    public static void main(String[] args) {
       Session session =HibernateUtils.openSession();
       Transaction transaction = session.beginTransaction();


       transaction.commit();
       session.close();
    }
}

Session

Session 与Connection类似。
起连接数据库的作用,是与数据库交互的桥梁。
完成增删改查的操作。
但Session不是线程安全,在方法中使用。
常用API

  1. 保存方法:Serializable save(Object obj) (返回ID)
  2. 查询方法: T get(class c,Serializable id)
  3. 查询方法: T load(class c,Serializable id)
    get/load: 的区别:
    1:get 立即加载,发生SQL语句去查询,load 延迟加载。执行到代码时不会立即发生SQL语句去查询,当真正使用到对象时才会发生SQL语句。
    2:当查询不到时,get会返回null,load 则会返回 ObjectNotFoundException。
    3:get 返回真是对象,load 返回代理对象。

修改

public class Main {
    public static void main(String[] args) {
       Session session =HibernateUtils.openSession();
       Transaction transaction = session.beginTransaction();

       StudentEntity studentEntity = session.load(StudentEntity.class,2);
       studentEntity.setName("wije2");
       session.update(studentEntity);


       transaction.commit();
       session.close();
    }

先查询再修改,也可以直接修改

查询所有:

    public static void main(String[] args) {
       Session session =HibernateUtils.openSession();
       Transaction transaction = session.beginTransaction();

       StudentEntity studentEntity =new StudentEntity();
       Query query = (Query) session.createQuery("from StudentEntity ");
        List<StudentEntity> list = query.list();
        for (StudentEntity studentEntity1: list){
            System.out.println(studentEntity);
        }
       transaction.commit();
       session.close();
    }

删除

public class Main {
    public static void main(String[] args) {
       Session session =HibernateUtils.openSession();
       Transaction transaction = session.beginTransaction();

       StudentEntity studentEntity = session.load(StudentEntity.class,9);
       session.delete(studentEntity);


       transaction.commit();
       session.close();
    }
}

先查询再删除(级联删除),也可以直接删除,但推荐前者。

Transaction

事务对象,两个API。
如果不配置c3p0,可以不写。内置连接池可以提交,但最好加上。

  1. commit()
  2. rollback()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值