一 添加数据
public void addTest()
{
//创建SessionFactory 对象,读取hibernate核心配置文件,
//过程后,在配置数据库里面创建表
Configuration cfg = new Configuration();
cfg.configure();
//得到 SessionFactory 对象
SessionFactory sessionFactory = cfg.buildSessionFactory();
//SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
//使用SessionFactory对象创建session对象
//类似于连接connection
Session session = sessionFactory.openSession();
//开启事物
Transaction ts = session.beginTransaction();
//写具体逻辑crud
User user = new User();
user.setUsername("GRL");
user.setPassword("344");
user.setAddress("japan");
//调用session方法保存
session.save(user);
//提交事物
ts.commit();
//关闭资源
session.close();
sessionFactory.close();
}
二 修改数据
@Test
public void upDate()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
User user = session.get(User.class, 1);
System.out.println(user);
user.setUsername("东方不败");
session.update(user);
ts.commit();
System.out.println(user);
session.close();
sessionFactory.close();
}
三 删除操作(建议使用方式一)
方式一 先根据id查询出来User,再调用session.delete(user);代码如下:
public void delTest()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
User user = session.get(User.class,1);
session.delete(user);
ts.commit();
}
方式二 先new出一个新的对象,为对象赋值ID,再调用session.delete(user);
@Test
public void delTest()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
User user = new User();
user.setUid(2);
//User user = session.get(User.class,1);
session.delete(user);
ts.commit();
}
四 查询数据库书所有内容
(1)Query 对象 :使用该对象查询数据不需要写SQL语句,但是需要些hql(hibernate query language)
@Test
public void queryTest()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
Query query = session.createQuery("from User");
List
for(User user :list)
System.out.println(user);
session.close();
}
(2)Criteria 对象,使用该对象,不需要语句,直接调用list方法即可。
@Test
public void criteriaTest()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
List
for(User user:list)
System.out.println(user);
session.close();
}
(3)SQLQuery 对象:使用hibernate 时,也可以调用底层sql,使用该对象就可以实现。
方式一:缺点就返回的list是Object[],而不是对象的list
@Test
public void SQLQueryTest()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
SQLQuery sqlquery = session.createSQLQuery("select * from t_User");
List
方式二 返回的是对象的list
@Test
public void SQlQuery2()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
Session session = sessionFactory.openSession();
SQLQuery sqlquery = session.createSQLQuery("select * from t_User");
sqlquery.addEntity(User.class);
List
for(User obj :list)
System.out.println(obj);
}