在配置完hibernate环境之后使用起来就特别简单
代码为证
用hibernate操作数据库时要注意当影响数据库得数据本身时要通过事务来进行操作这样才能保证安全性。增删改操作都会影响数据库的数据。
一 、用Session来操作
// 1. 创建Configuraction对象,注意configure()方法
Configuration cfg = new Configuration().configure();
// 2. 通过Configuration对象创建SessionFactory对象
SessionFactory sf = cfg.buildSessionFactory();
// 3. 使用SessionFactory对象创建一个Session对象
Session s = sf.openSession();
// 4. 使用Session对象开启一个事务
Transaction tx = s.beginTransaction();
try {
// 5. 实现数据的crud操作
//增加数据
s.save(user);
//实现数据更新
s.update(user);
//实现数据的删除 这里的对象所有属性必须都要有值,缺少会出错。删除时只关注id 别的属性值没有影响但是得有。
s.delete(user);
// 6. commit或者rollback事务
tx.commit();
return true;
} catch (Exception e) {
// 6. commit或者rollback事务
tx.rollback();
e.printStackTrace();
} finally {
// 7. 关闭session对象
s.close();
}
当进行查询数据时不需要进行事务操作
1.用ID来查询单个数据
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session s = sf.openSession();
Cuser cuser=s.get(CUser.class, 2);
- 查询所有数据
Session s = sf.openSession();
List<Student> list=s.createQuery("from Student").getResultList();
二 用Criteria来查询
//查询数据库所有数据
Session s = sf.openSession();
List<User> list = null;
Criteria criteria = s.createCriteria(User.class);
list = criteria.list();
//查询username为name的所有数据
Criteria criteria = s.createCriteria(User.class);
//""中的为类中的属性名
criteria.add(Restrictions.eq("username", name));
list = criteria.list();
//id查询
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.idEq(new Integer(uid)));
list = c.list();
//多id查询
Integer[] ids= new Integer[]{1, 2, 3, 55, 33};
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.in("uid", ids));
list = c.list();
//模糊查询
Criteria c = s.createCriteria(User.class);
/// MatchMode.ANYWHERE 匹配%name%
/// MatchMode.END 匹配%name
/// MatchMode.EXACT 匹配字符串本身,等同于eq
/// MatchMode.START 匹配name%
c.add(Restrictions.like("username", name, MatchMode.START));
list = c.list();
//排序查询
Criteria c = s.createCriteria(User.class);
//升序
c.addOrder(Order.asc("username"));
//降序c.addOrder(Order.desc("password"));
list = c.list();
//多限制查询
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.and(Restrictions.like("username", name, MatchMode.ANYWHERE),
Restrictions.like("password", pass, MatchMode.ANYWHERE)));
list = c.list();
//非空和空查询
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.isNull("username"));
//c.add(Restrictions.isNotNull("username"));
list = c.list();
三 用sql语句来操作
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
String sql = String.format("delete from user where uid = %d", 31);
NativeQuery query = s.createNativeQuery(sql);
int result = 0;
try {
result = query.executeUpdate();
tx.commit();
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
}finally{
s.close();
}
if(result > 0){
System.out.println("successfully");
}else{
System.out.println("error");
}
}