在配置Hibernate完成后,如何运用Hibernate进行数据库操作。
比如我的数据的一个表为user表,存储id、name、password、phone、adress字段。
已经创建好User.java类以及起映射关系。
此时创建类UserDao.java类,创建方法query()
//查找数据库信息
public void query() {
String HQLString = "from User";
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery(HQLString);
java.util.List list = query.list();
for (Object o : list) {
User u = (User) o;
System.out.println(u.getName() + " " + u.getPassword());
}
}
这是提取数据库里user表中所有信息。
Session session = HibernateSessionFactory.getSession();获取session对象
Session接口不是jsp应用中的HttpSession,而是负责执行持久化对象的CRUD操作(任务是完成与数据库的交互),后续可能对Session有详细介绍。
Query query = session.createQuery(HQLString);
java.util.List list = query.list();
在执行查询后query.list()返回List对象,存储获取的数据保存在list中,后面可以用迭代输出所有数据。
那如果查询后的数据是唯一的,不是获取所有信息,比如我HQLString为“select o from User o where o.name='aa'”
查询后就不能储存在list中了,我们可以直接User user=query.uniqueResult();这样获取的数据就直接放到User里了。
上述是查找,要是添加呢?
这是我们再添加一个方法
public void saveUser(User user) {
Session session = null; // 创建一个事务
Transaction transaction = null;
try {
session = HibernateSessionFactory.getSession();
transaction = session.beginTransaction();
session.save(user);
transaction.commit();
} finally {
if (session != null) {
session.close();
}
}
}
方法中添加了事务。看来Hibernate是如此的简便。
同理我们再来个删除数据的方法
public void delUser(User user){
Session session = null;
try {
session=HibernateSessionFactory.getSession();
Transaction transaction=session.beginTransaction();
session.delete(user);
transaction.commit();
} catch (Exception e) {
// TODO: handle exception
if (session != null) {
session.close();
}
}
}
只是换了一句,session.delete(user);