(友情提示:你要进行对数据库的操作,就得先把数据库启动,启动你创的数据库 use XXX;)
三、实体类操作
(1)crud操作
——添加操作,之前写过的
——根据id查询
数据库:select * from t_user where uid =1;
*准备工作:
首先复制原来的hibernate_day01,改名hibernate_day02。把uid改回原来的int型,uuid改为native,将数据库名称改为hibernate_day02;不过要自己重新建一个数据库。我们执行工具类使生成表。
最后执行工具类——>有表了。
*向里面添加数据,再来根据id查询:
*创建一个测试类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.itcast.Utils.HibernateUtils;
import cn.itcast.entity.User;
public class hibernateTest {
@Test
public void testGet(){
//1.调用工具类得到SessionFactory
SessionFactory sessionFactory =HibernateUtils.getSessionFactory();
//2.获取session
Session session= sessionFactory.openSession();
//3.开启事务
Transaction tx =session.beginTransaction();
/*4.根据id查询
* 调用session里面的get方法
* 第一个参数:实体类的class
* 第二个参数:id值
*
*/
User user =session.get(User.class,1);
System.out.println(user);
//5.提交事务
tx.commit();
//6.关闭
session.close();
sessionFactory.close();
}
}
打印:
执行:
——修改操作
首先查询,修改值:根据id查询,返回对象
*数据库修改:update t_user set username=?,address=?, where uid=?
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.itcast.Utils.HibernateUtils;
import cn.itcast.entity.User;
public class hibernateTest {
@Test
public void testUpdate(){
//1.调用工具类得到SessionFactory
SessionFactory sessionFactory =HibernateUtils.getSessionFactory();
//2.获取session
Session session= sessionFactory.openSession();
//3.开启事务
Transaction tx =session.beginTransaction();
/*4.修改操作
* 修改uid=2,记录username的值
*/
//4.1 根据id查询
User user =session.get(User.class, 2);
//4.2向返回的user对象里面设置修改后的值
user.setUsername("chen");
//4.3 调用session的update方法进行修改
//执行过程:到user对象里面找到uid值,进行修改
session.update(user);
//5.提交事务
tx.commit();
//6.关闭
session.close();
sessionFactory.close();
}
——删除操作(第一种常用)
(2)实体类对象状态(概念)
实体类对象状态有三种
1)瞬时态:对象里面没有id值,对象与session没有关联
2)持久态:对象里面有id值,对象与session关联
3)托管态:对象有id值,对象与session没有关联
四、hibernate的一级缓存
五、hibernate的事务操作
(1)事务代码规则写法
六、